Skip to content

ci: fail on new unbounded SQL IN lists and add a Prisma chunking helper - #42629

Merged
mateo-berri merged 11 commits into
mainfrom
litellm_lint_unbounded_in_lists
Sep 26, 2026
Merged

mateo-berri merged 11 commits into
mainfrom
litellm_lint_unbounded_in_lists

Conversation

@ryan-crabbe-berri

@ryan-crabbe-berri ryan-crabbe-berri commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

TLDR

Problem this solves:

How it solves it:

  • New litellm.repositories.chunked_in: find_many_in, count_in, update_many_in, delete_many_in
    • Dedupes values, runs 5,000-value chunks in order, ANDs each with where
    • Keyword-only chunk_size overrides the 5,000 default; outside 1 to 30,000 it raises ValueError before any query, leaving the rest of the filter headroom under the cap
    • Works on a transaction handle; writes require an explicit atomicity choice
    • Refuses a where that already filters the chunked field, and an update whose data writes it (a moved row would match a later chunk and update twice)
    • Each chunk is sent as the same dict-and-list filter a hand-written call sends
  • check_unbounded_in_lists.py now fails CI on any finding not in the baseline
    • 156 existing findings grandfathered in unbounded_in_baseline.txt
    • Entries are keyed by file, function, field, the filtered expression and occurrence, not line numbers
    • Swapping a baselined filter for a different expression on the same field reads as one new and one stale entry
    • A stale entry also fails, so the baseline can only shrink
    • --update-baseline regenerates it
  • Messages point at the helper for in and <> ALL($1::text[]) for not_in
  • A functional TypedDict("Name", {...}) field map is skipped: its "in" key is a field name, not a filter
  • One call site is migrated as proof of the API: _details_for_user_ids in key_metadata_recovery.py now uses find_many_in
    • Up to 5,000 ids it sends the same single find_many with the same where; its existing tests pass unmodified

User Flow

Before: a contributor adds a membership filter that grows with a table and CI lets it merge

  1. They write where={"user_id": {"in": user_ids}} in a proxy endpoint and open a PR
  2. The Code Quality Checks job passes with no mention of the filter
  3. On a large install the list passes 32,767 values and the request fails with too many bind variables in prepared statement

After: the same PR fails CI with the fix named, and the fix handles any list size

  1. They write the same filter and open the PR
  2. The Code Quality Checks job fails at check_unbounded_in_lists with path:line: prisma "in" filter over user_ids has no written bound ... Chunk it with litellm.repositories.chunked_in
  3. They switch to find_many_in(table, "user_id", user_ids) (or record a real bound with # bounded-ok: <reason>) and the job passes
  4. The same request with 40,000 ids now returns every row instead of failing

Relevant issues

Refs #40564

Linear ticket

Refs LIT-7535

Pre-Submission checklist

Please complete all items before asking a LiteLLM maintainer to review your PR

  • I have added meaningful tests
  • The handful of test files covering my change pass locally, e.g. uv run pytest tests/test_litellm/<your_test_file>.py -v. Leave the suites (make test-unit-*, make test-unit) to CI: it finishes in ~15 minutes where a laptop takes an hour or more
  • My PR passes all required CI/CD checks (e.g., lint, schema.d.ts sync check, etc.)
  • My PR's scope is as isolated as possible; it only solves 1 specific problem
  • I have received a Greptile Confidence Score of at least 4/5 before requesting a maintainer review (Greptile reviews automatically once the PR is opened; only comment @greptileai to re-request a review after pushing changes)

Screenshots / Proof of Fix

Shared setup: a local Postgres 14 on port 54917 with a probe schema holding a LiteLLM_Config table of 40,000 rows (id-0 to id-39999). demo.py sends a raw count(where={"param_name": {"in": ids}}) over all 40,000 ids, then calls each helper with the same ids (update_many_in inside db.tx())

Before (7688f56)

CI on a new unbounded list

  1. python tests/code_coverage_tests/check_unbounded_in_lists.py
  2. can't open file ... No such file or directory: nothing checks the filter, so the PR merges

40,000 ids through Prisma

  1. DATABASE_URL=postgresql://postgres@127.0.0.1:54917/litellm_test python demo.py
  2. Output:
raw count: DataError Assertion violation on the database: `too many bind variables in prepared statement, expected maximum of 32767, received 40001`
ModuleNotFoundError: No module named 'litellm.repositories.chunked_in'

After (9c7eae6)

CI on a new unbounded list

  1. python tests/code_coverage_tests/check_unbounded_in_lists.py on the clean tree
  2. Output: 156 unbounded IN list(s) (148 prisma, 8 raw-sql): 156 baselined, 0 new, 0 stale baseline entries. and echo $? prints 0
  3. In a scratch copy of the tree, append async def scratch_violation(table, ids): return await table.find_many(where={"user_id": {"in": ids}}) to litellm/repositories/user_repository.py and rerun
  4. Output, and echo $? prints 1:
litellm/repositories/user_repository.py:268: prisma `"in"` filter over `ids` has no written bound: it binds one parameter per value and Postgres caps a statement at 32,767. Chunk it with `litellm.repositories.chunked_in` (find_many_in / count_in / update_many_in / delete_many_in), or record the bound with `# bounded-ok: <reason>`

157 unbounded IN list(s) (149 prisma, 8 raw-sql): 156 baselined, 1 new, 0 stale baseline entries.

40,000 ids through Prisma

  1. DATABASE_URL=postgresql://postgres@127.0.0.1:54917/litellm_test python demo.py
  2. Output:
raw count: DataError Assertion violation on the database: `too many bind variables in prepared statement, expected maximum of 32767, received 40001`
count_in: 40000
find_many_in: 40000
update_many_in (in a tx): 40000
delete_many_in: 40000
rows left: 0

Tests and mutation check

  1. pytest tests/unit/repositories/test_chunked_in.py prints 52 passed (an update writing the chunked field refused in any form, including Greptile's ['old', 'new'] / chunk_size=1 case, a chunk equal to a hand-written filter, sizes 0, 1, 5,000, 5,001 and 12,345, custom chunk_size setting the query count, chunk_size bounds 1 and 30,000 accepted and 0 / -1 / 30,001 refused before any query, dedup, sums, AND composition, same-field refusal, required atomicity, and a query-builder check that the composed filter renders like a hand-written one)
  2. pytest tests/test_litellm/test_check_unbounded_in_lists.py prints 73 passed (new finding fails, stale entry fails, line shifts keep the key, a replaced expression on the same field fails, --update-baseline, helper exemption, constant spread, functional TypedDict field maps skipped while other calls' filters are still flagged)
    • pytest tests/test_litellm/proxy/spend_tracking/test_key_metadata_recovery.py prints 34 passed: the 32 existing tests unmodified, plus 12,001 user ids going out as 5,000 / 5,000 / 2,001 chunks with every result merged, and a failing later chunk still logged and treated as no details
  3. tests/integration/database/test_chunked_in_lists.py against real Postgres prints 5 passed: a raw 40,000-id count / update_many / delete_many is rejected while each helper handles the same ids, and attach_user_details fills every email for 40,000 users. It runs in the CircleCI database group
  4. Mutation check per tests/AGENTS.md: 62 of 62 mutants killed (plus one equivalent mutant on the TypedDict skip), each restored to green afterwards, for example:
    • chunk slice one short, or chunk size ignored
    • no dedup, or dedup that loses first-seen order
    • where dropped from the chunk filter, or same-field check off or stopping at the top level
    • sums replaced with the first chunk or the max chunk; find_many_in keeping only the last page
    • atomicity given a default
    • line number added to the baseline key, occurrence index pinned to 0
    • stale entries or new findings no longer failing the run
    • --update-baseline dropping unscanned entries or keeping fixed ones
    • helper exemption removed or matched by file name only
    • raising the chunk size to 40,000 fails 3 of the 4 real-Postgres tests
    • chunk_size bounds loosened or tightened by one on either side, the check removed, the max raised to 32,767, or chunk_size ignored in the range or the slice
    • the chunked-field write guard removed, skipped for empty lists or for operator forms, or matching by substring
    • the expression dropped from the baseline key, not whitespace-normalized, or a raw-SQL slot running to the end of the query
    • the TypedDict skip removed, matching any x.TypedDict, taking the first argument, or missing fields= or typing_extensions
    • _details_for_user_ids reverted to the raw filter, or chunks sent as tuples

Type

🆕 New Feature
🚄 Infrastructure

Caveats (if any)

Medium

  • update_many_in / delete_many_in over 5,000 values run as several statements
    • Atomic only on a transaction handle; atomicity="caller_transaction" records that choice
    • per_chunk_ok leaves earlier chunks applied if a later one fails
  • not_in cannot be chunked, so those sites need <> ALL($1::text[]) or a relation filter

Low

  • No group_by_in or take/skip/order/distinct: none of them survive a split
  • The 156 grandfathered findings still need migrating; the reset budget job is bounded by its 500-row batch
  • An identical expression re-added on the same field in the same function is the same finding, by design
  • Removing one of two same-field findings with the same expression in a function shifts the other's occurrence index
    • The run then reports one new and one stale entry until --update-baseline
  • from x import NAME constants are not resolved across modules; no current finding needs it
    • The check_batch_cost.py false positive was a spread of a local tuple constant, now counted as fixed
  • The 40,000-user integration test also passes on the pre-migration code, since the engine splits a plain find_many on its own; the migration is for consistency and for the cases it does not split
  • Every membership filter is reported, reads included, since the filter dict is usually built away from the call and the engine's find_many chunking is partial (Bug: findMany() with two large in filters with arrays of 32767 items each fails with Assertion violation, too many bind variables in prepared statement prisma/orm#21802)
  • misc / Run tests red is main's own: test_price_map_has_no_duplicate_keys failed on main until fix(cost-map): remove duplicate openrouter/perceptron/perceptron-mk1.5 entry #43273 (4d7aa89), which is newer than this branch's merge base
  • codecov/patch reads chunked_in.py at 61% because tests/unit runs only in the CircleCI unit job, started by the run-ci label
    • Locally tests/unit/repositories/test_chunked_in.py covers it at 96% (52 passed); the two missed lines are the case _ arm of _logical_clauses
  • CodeQL py/mixed-returns notes (alerts 13011, 13012) on _as_clauses and _logical_clauses
    • Every match arm returns, case _ included, so no path falls through to None; left as is since a push to appease a note resets the bot verdicts
  • ci/circleci: local_testing_part1 red is main's own: test_get_model_info_bedrock_cross_region_capability_parity fails at this tip and passes on the tip merged with main
  • ci/circleci: local_testing_part2 red predates this PR: test_openai_stream_options_call_text_completion fails identically at the merge base 8694c3c, with 'MockValSer' object is not an instance of 'SchemaSerializer'
    • Main's scheduled pipelines today pass it, and none of this PR's files are on that path
  • The Before proof leg ran at 7688f56, 305 commits behind the merge base 8694c3c
    • Equivalent for both cases: no main commit carries the checker or the module
    • The bind cap is the engine's, so a re-run at the merge base changes nothing

Final Attestation

  • The tests check the right things, including the edge cases, and regressions in the respective real-world customer use-cases are not possible after this PR

Note

Medium Risk
Touches proxy spend metadata DB reads and adds broad CI rules for membership filters; chunked writes can be partially applied unless run in a transaction.

Overview
Adds CI enforcement and a repository helper so Prisma/SQL IN lists cannot silently exceed Postgres’s 32,767 bind-parameter limit.

A new litellm.repositories.chunked_in module exposes find_many_in, count_in, update_many_in, and delete_many_in, which dedupe values, run 5k-value chunks (with optional extra where), and merge results; writes require an explicit atomicity choice. Related Prisma table protocols were added for typing.

Code Quality now runs check_unbounded_in_lists.py, which AST-scans litellm/ and enterprise/ for unbounded Prisma "in"/"not_in" filters and runtime-spliced raw SQL IN ( patterns. ~156 existing sites are grandfathered in unbounded_in_baseline.txt; new or stale baseline entries fail the job.

One production migration: spend-log key metadata user lookup (_details_for_user_ids) uses find_many_in instead of a single find_many with user_id: {in: ...}. Unit, integration (40k rows), and checker tests cover the helper and CI behavior.

Reviewed by Cursor Bugbot for commit 9c7eae6. Bugbot is set up for automated code reviews on this repo. Configure here.

@ryan-crabbe-berri
ryan-crabbe-berri requested a review from a team September 23, 2026 00:46
@greptile-apps

greptile-apps Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[High risk] Adds database query chunking and a CI check for unbounded SQL lists.

The PR appears safe to merge based on the current findings.

Summary

The PR adds chunked Prisma membership helpers, migrates user-detail recovery to use them, and makes the unbounded-list check enforce a baseline in CI.

  • Adds unit and database integration coverage for large lists and the migrated lookup.

Reviews (5) · Last reviewed commit: "ci: key an unbounded IN list finding by ..."

Comment thread tests/code_coverage_tests/check_unbounded_in_lists.py Outdated
Comment thread tests/code_coverage_tests/check_unbounded_in_lists.py
@ryan-crabbe-berri

Copy link
Copy Markdown
Contributor Author

@greptile re review

Comment thread tests/code_coverage_tests/check_unbounded_in_lists.py Outdated
Comment thread tests/code_coverage_tests/check_unbounded_in_lists.py Outdated
@codecov

codecov Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 64.40678% with 21 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
litellm/repositories/chunked_in.py 61.11% 21 Missing ⚠️

📢 Thoughts on this report? Let us know!

@ryan-crabbe-berri

Copy link
Copy Markdown
Contributor Author

@greptile re review

@ryan-crabbe-berri

Copy link
Copy Markdown
Contributor Author

how do you deal with the fact that the direct sql function call might have an unbounded in but the place with the actual chunking logic living as an upstream caller ?

@ryan-crabbe-berri ryan-crabbe-berri changed the title ci: warn on SQL IN lists with no written bound ci: fail on new unbounded SQL IN lists and add a Prisma chunking helper Sep 25, 2026
Postgres caps a prepared statement at 32,767 bind parameters and a
membership filter binds one per value, so an IN list built from table
data breaks once the table outgrows the cap. That is how the budget reset
job froze every due budget (LIT-7535, #40564).

check_unbounded_in_lists.py reports every Prisma "in" / "not_in" filter
whose value has no fixed size and every raw SQL literal that splices a
list in after "IN (", unless the line carries "# bounded-ok: <reason>".
It only warns for now: the output is the inventory for RCA action item
AI-1, and it exits 0.
An ALL_CAPS name imported or filled at runtime is as unbounded as any
other, so a name now passes only when the module binds it once to a
value of fixed size. Adds Final to the locals a loop does not forbid.
A module list bound once could still grow through append or extend, so
a name now counts as fixed only when it is bound to a tuple, frozenset
or constant. Trims the module docstring to what a reader needs.
…ded ones

Add litellm.repositories.bounded_in: find_many_in, count_in, update_many_in
and delete_many_in split a deduplicated value list into 5,000-value chunks,
AND each chunk with the caller's where, run them in order (a transaction
handle works) and combine the results. Writes take a required atomicity
argument, and a where that already filters the chunked field is refused.

check_unbounded_in_lists.py now fails CI on any finding missing from
unbounded_in_baseline.txt and on any stale baseline entry, so the baseline
only shrinks. Entries are keyed by path, enclosing scope, kind, field and
occurrence, not line numbers. The helper module is exempt, a constant
spread into a frozen tuple counts as fixed, and messages point at the
helper for "in" and at an array parameter for "not_in" and raw SQL.

A real-Postgres integration test shows a raw 40,000-value filter rejected
for too many bind variables while the helpers handle it.
…k size

The helper module is litellm.repositories.chunked_in, and its unit and
integration tests, the checker's exemption path and its finding messages
follow the new name. The `# bounded-ok` marker is unchanged.

find_many_in, count_in, update_many_in and delete_many_in take a
keyword-only chunk_size, defaulting to IN_LIST_CHUNK_SIZE (5,000). A value
below 1 or above MAX_IN_LIST_CHUNK_SIZE (30,000) raises ValueError before
any query, which leaves the rest of the filter headroom under Postgres's
32,767 bind-parameter cap.
…_iterable

LIT014 (#42650) caps a comprehension at one for and one if clause. The four nested walks in the helper now chain their iterables instead, with the same order and results.
@ryan-crabbe-berri
ryan-crabbe-berri force-pushed the litellm_lint_unbounded_in_lists branch from f9a4a26 to 0b2e80a Compare September 26, 2026 01:08
pass


def _as_clauses(value: object) -> tuple[object, ...]:
return (value,)


def _logical_clauses(clause: object) -> tuple[object, ...]:
@codspeed

codspeed Bot commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 31 untouched benchmarks


Comparing litellm_lint_unbounded_in_lists (9c7eae6) with main (4179860)1

Open in CodSpeed

Footnotes

  1. No successful run was found on main (2ef3250) during the generation of this report, so 4179860 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

@ryan-crabbe-berri

Copy link
Copy Markdown
Contributor Author

bugobt run

@ryan-crabbe-berri

Copy link
Copy Markdown
Contributor Author

@greptileai re review

Comment thread tests/code_coverage_tests/check_unbounded_in_lists.py
Comment thread litellm/repositories/chunked_in.py
…ists

_details_for_user_ids reads users through find_many_in instead of a raw
"in" filter, so its lookup stays under the bind-parameter cap for any
number of recovered keys. Up to 5,000 ids it still sends one find_many
with the same where dict, and a PrismaError from any chunk is still
logged and treated as no details.

The helper now sends each chunk as a list, so a chunked filter equals
the dict a hand-written call would send and a migrated call site's
existing assertions keep passing.

The site's baseline entry is gone.
The dict passed as the field map of TypedDict("Name", {...}), or as its fields= keyword, names fields: an "in" or "notIn" key there is a type, not a filter. Only that dict is skipped, for TypedDict, typing.TypedDict and typing_extensions.TypedDict; a filter nested in a field value or passed to any other call is still reported. The two types/proxy/management_endpoints/team_endpoints.py entries leave the baseline, which is now 156.
Chunks run one after another, so an update that sets the chunked field can move a row into a later chunk, which updates it again and counts it twice: values ["old", "new"] with chunk_size=1 and data={"id": "new"} does exactly that. update_many_in now raises ChunkedFieldWriteError before any query when data has the chunked field as a top-level key, in any form, including Prisma operators such as {"set": ...}.
…and how to clear it

It now says what is reported, the three ways to clear a finding, and how the baseline and --update-baseline work, in 11 lines. The per-shape detail lives in the tests.
A baseline key of path, scope, kind, field and occurrence let a PR delete
a baselined filter and add a different unbounded one on the same field in
the same function, and the new one took over the old key. The key now
also carries the filtered expression's source, whitespace-normalized
(the Prisma value, or a raw-SQL `IN (...)` slot), so that swap reads as
one new and one stale entry and fails the run. The same expression
re-added in the same function is still the same finding.

Every baseline entry is rewritten in the new form; the 156 findings are
unchanged, and only occurrence indexes renumber where one field had
several different expressions.
@ryan-crabbe-berri

Copy link
Copy Markdown
Contributor Author

@greptileai

@ryan-crabbe-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 9c7eae6. Configure here.

@mateo-berri mateo-berri left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks!

@mateo-berri
mateo-berri merged commit 96c008f into main Sep 26, 2026
143 of 164 checks passed
@mateo-berri
mateo-berri deleted the litellm_lint_unbounded_in_lists branch September 26, 2026 20:40
hbjydev pushed a commit to hbjydev/phoebe that referenced this pull request Oct 13, 2026
…105.0) (#866)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/berriai/litellm](https://images.chainguard.dev/directory/image/wolfi-base/overview) ([source](https://github.com/BerriAI/litellm)) | minor | `v1.104.0` → `v1.105.0` |

---

### Release Notes

<details>
<summary>BerriAI/litellm (ghcr.io/berriai/litellm)</summary>

### [`v1.105.0`](https://github.com/BerriAI/litellm/releases/tag/v1.105.0)

[Compare Source](https://github.com/BerriAI/litellm/compare/v1.104.3...v1.105.0)

##### Verify Docker Image Signature

All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). Every release is signed with the same key introduced in [commit `0112e53`](https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0).

**Verify using the pinned commit hash (recommended):**

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

```bash
cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.105.0
```

**Verify using the release tag (convenience):**

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

```bash
cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.105.0/cosign.pub \
  ghcr.io/berriai/litellm:v1.105.0
```

Expected output:

```
The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key
```

***

##### What's Changed

- feat(mcp): share compatibility-aware result conversion across tool surfaces by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43089](https://github.com/BerriAI/litellm/pull/43089)
- fix(caching): propagate auth cache invalidation over Redis Cluster via a node-level pub/sub client by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43110](https://github.com/BerriAI/litellm/pull/43110)
- feat(model-catalog): add Rust registry validation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43136](https://github.com/BerriAI/litellm/pull/43136)
- test(rust): reorganize core crate tests and split cache and OCR suites by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43177](https://github.com/BerriAI/litellm/pull/43177)
- fix(proxy): give SpendLogToolIndex its own share of the cleanup budget and log a per-run summary by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;41768](https://github.com/BerriAI/litellm/pull/41768)
- feat(rust): hand upstream response headers to the native Messages stream by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43178](https://github.com/BerriAI/litellm/pull/43178)
- feat(testkit): agent clients for Claude Code, Codex and opencode by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43181](https://github.com/BerriAI/litellm/pull/43181)
- ci: run migrated unit selections on every event in legacy GHA shards by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43182](https://github.com/BerriAI/litellm/pull/43182)
- test: move tests/test_litellm root and small trees into tests/unit by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43186](https://github.com/BerriAI/litellm/pull/43186)
- fix(sso): gate /sso/debug routes behind ENABLE_SSO_DEBUG, off by default by [@&#8203;ojensen-berri](https://github.com/ojensen-berri) in [#&#8203;43150](https://github.com/BerriAI/litellm/pull/43150)
- refactor(framer): replace Framer trait with tokio-util codecs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43193](https://github.com/BerriAI/litellm/pull/43193)
- fix(anthropic): surface Responses bridge stream failures as Anthropic error events by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43126](https://github.com/BerriAI/litellm/pull/43126)
- test: move tests/test_litellm/llms into tests/unit/llms by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43191](https://github.com/BerriAI/litellm/pull/43191)
- test: move tests/test_litellm integrations and secret_managers into tests/unit by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43194](https://github.com/BerriAI/litellm/pull/43194)
- feat(mcp): configure protocol versions and capability discovery by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43169](https://github.com/BerriAI/litellm/pull/43169)
- fix(proxy): record streamed /v1/responses container ownership before the response.completed frame by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43140](https://github.com/BerriAI/litellm/pull/43140)
- fix(tests): drop the repeated UNIT_FLAG key in test_unit_shard_missing_paths by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43212](https://github.com/BerriAI/litellm/pull/43212)
- fix(router): count provider budget spend on every API surface by [@&#8203;daqiangganjun](https://github.com/daqiangganjun) in [#&#8203;38172](https://github.com/BerriAI/litellm/pull/38172)
- fix(responses): fall back on pre-output stream drops, fail truncated streams, honor request_timeout by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43133](https://github.com/BerriAI/litellm/pull/43133)
- fix(sentry): scrub PII and secrets inside object reprs and nested locals, add SENTRY_SEND_DEFAULT_PII opt-in by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43123](https://github.com/BerriAI/litellm/pull/43123)
- fix(bedrock): surface a converse-stream 200 that decodes to no events as a 502 instead of an empty turn by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43213](https://github.com/BerriAI/litellm/pull/43213)
- fix(jwt): let x-litellm-team-id select DB membership teams when the token also carries a team claim by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43206](https://github.com/BerriAI/litellm/pull/43206)
- feat(integrations): add Databricks Zerobus trace logging callback by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42013](https://github.com/BerriAI/litellm/pull/42013)
- fix(vertex_ai): keep legacy bucket_name in credential resolution and add GCS_BATCH_BUCKET_NAME env var by [@&#8203;mubashir1osmani](https://github.com/mubashir1osmani) in [#&#8203;42803](https://github.com/BerriAI/litellm/pull/42803)
- feat(xai): add native xAI batches and files support by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42812](https://github.com/BerriAI/litellm/pull/42812)
- fix(proxy): send a real error event when a /v1/messages stream fails by [@&#8203;4refael](https://github.com/4refael) in [#&#8203;41826](https://github.com/BerriAI/litellm/pull/41826)
- fix(logging): redact raw_request when turn_off_message_logging is set in the proxy config by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43219](https://github.com/BerriAI/litellm/pull/43219)
- fix(router): parse the classifier verdict out of surrounding prose instead of falling to the default tier by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43215](https://github.com/BerriAI/litellm/pull/43215)
- test(zerobus): move tests into active CI selection by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43235](https://github.com/BerriAI/litellm/pull/43235)
- fix(proxy): keep the submitted body out of 422 validation errors by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43231](https://github.com/BerriAI/litellm/pull/43231)
- test: move tests/test_litellm core utils, routing, responses, caching and rust_bridge into tests/unit by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43199](https://github.com/BerriAI/litellm/pull/43199)
- chore(cost-map): add fireworks us-only deepseek v4.1 flash priority prices by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43247](https://github.com/BerriAI/litellm/pull/43247)
- chore(cost-map): sync openrouter prices and add perceptron-mk1.5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43246](https://github.com/BerriAI/litellm/pull/43246)
- fix(cost-map): correct fireworks_ai deepseek-v4p1-flash pricing by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43253](https://github.com/BerriAI/litellm/pull/43253)
- feat(openrouter): add typesafe/jev-router to the cost map by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43248](https://github.com/BerriAI/litellm/pull/43248)
- chore(cost-map): add fireworks priority prices for muse glimmer 30b and deepseek v4 flash vision exp by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43252](https://github.com/BerriAI/litellm/pull/43252)
- refactor(rust): move credential inheritance and SDK limits into a driver preflight by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43259](https://github.com/BerriAI/litellm/pull/43259)
- fix(router): hold Responses lifecycle events until output so a pre-output fallback announces one response by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43238](https://github.com/BerriAI/litellm/pull/43238)
- refactor(http): hand out an owned Client and route all providers through the pool by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43245](https://github.com/BerriAI/litellm/pull/43245)
- test: fix stale and state-leaking tests red on scheduled CircleCI by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43266](https://github.com/BerriAI/litellm/pull/43266)
- fix(cost-map): retirement dates, chatgpt reasoning flags, bing pricing, bedrock mantle and mythos, azure gpt-5.6 alias, anthropic batch rates, new nebius, openrouter and xai rows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42951](https://github.com/BerriAI/litellm/pull/42951)
- refactor(rust): promote anthropic messages out of experimental_pass_through by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43269](https://github.com/BerriAI/litellm/pull/43269)
- test: stop CI tests from downloading tokenizer files and images by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43257](https://github.com/BerriAI/litellm/pull/43257)
- fix(rust): preserve nested optional import failures by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43265](https://github.com/BerriAI/litellm/pull/43265)
- ci: drop main and litellm\_\* branch filters from the CircleCI litellm-main workflows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43272](https://github.com/BerriAI/litellm/pull/43272)
- feat(proxy): email alerts at configured percentages of a team member budget by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42665](https://github.com/BerriAI/litellm/pull/42665)
- fix(callbacks-legacy-python): traverse and release the retained headers dict by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43274](https://github.com/BerriAI/litellm/pull/43274)
- test(integration): port langfuse callbacks-in-db coverage to the local harness by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43282](https://github.com/BerriAI/litellm/pull/43282)
- test(e2e): accept the otel cost write as a linked root trace by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42931](https://github.com/BerriAI/litellm/pull/42931)
- test: finish the non-proxy half of tests/test_litellm by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43281](https://github.com/BerriAI/litellm/pull/43281)
- refactor(rust): prepare inference and auth foundations for the gateway by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43287](https://github.com/BerriAI/litellm/pull/43287)
- feat(rust): add config, router and gateway crates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43289](https://github.com/BerriAI/litellm/pull/43289)
- fix(cost-map): remove duplicate openrouter/perceptron/perceptron-mk1.5 entry by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43273](https://github.com/BerriAI/litellm/pull/43273)
- fix(e2e): resolve the blank-S3 gateway repo root from the litellm package location by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42911](https://github.com/BerriAI/litellm/pull/42911)
- test(integration): run the Langfuse DB-callback test on its own scratch database by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43288](https://github.com/BerriAI/litellm/pull/43288)
- refactor(rust): expand logging and test coverage across gateway and Anthropic messages by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43295](https://github.com/BerriAI/litellm/pull/43295)
- refactor: daily fresh tech debt cleanup, rolling PR (2026-09-25) by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43151](https://github.com/BerriAI/litellm/pull/43151)
- test(proxy_behavior): scope the management proxy fixture to its package so its spend monitor cannot race the spend tests by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43302](https://github.com/BerriAI/litellm/pull/43302)
- fix(cost-map): registry audit 2026-09-26, MAI-Image-2.5-Flash price, Databricks Claude Opus 5.5, Azure Foundry retirement dates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43254](https://github.com/BerriAI/litellm/pull/43254)
- fix(cost-map): price fireworks deepseek v4.1 flash at the prices api value by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43311](https://github.com/BerriAI/litellm/pull/43311)
- fix(ci): stop stale CI reds, keep unit tests off the host env, retry CyberArk policy conflicts by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43294](https://github.com/BerriAI/litellm/pull/43294)
- fix(otel): detach post-response service spans by request phase, name redis spans by operation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43237](https://github.com/BerriAI/litellm/pull/43237)
- test(e2e): assert only litellm-owned batch behavior and move the blank S3 env pin to an integration test by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43321](https://github.com/BerriAI/litellm/pull/43321)
- test(integration): pin the team-admin status-code matrix across every management route by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43249](https://github.com/BerriAI/litellm/pull/43249)
- feat(proxy): add fail_closed_rate_limit_enforcement to reject requests with 503 while Redis rate limit counters are unreachable by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43251](https://github.com/BerriAI/litellm/pull/43251)
- fix(responses): run stream failure and success hooks on the iterating loop instead of blocking it by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43270](https://github.com/BerriAI/litellm/pull/43270)
- fix(guardrails): block private destinations in custom code http_request and bound guardrail execution time by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43280](https://github.com/BerriAI/litellm/pull/43280)
- feat(sail): add Sail as a provider with service_tier mapped to its completion window by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42840](https://github.com/BerriAI/litellm/pull/42840)
- test(mcp): pin server resolution and authorization behavior by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43261](https://github.com/BerriAI/litellm/pull/43261)
- refactor(anthropic): rename experimental_pass_through to pass_through by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43329](https://github.com/BerriAI/litellm/pull/43329)
- refactor(mcp): add shared server resolver without changing callers by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43262](https://github.com/BerriAI/litellm/pull/43262)
- ci: fail on new unbounded SQL IN lists and add a Prisma chunking helper by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;42629](https://github.com/BerriAI/litellm/pull/42629)
- test(logging): drain the logging worker after each logging callback test so no later test inherits its events by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43344](https://github.com/BerriAI/litellm/pull/43344)
- feat(guardrails): scan retrieved vector store chunks with the request's pre-call guardrails by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43271](https://github.com/BerriAI/litellm/pull/43271)
- fix(mcp): adopt shared server resolution and caller authorization by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43263](https://github.com/BerriAI/litellm/pull/43263)
- fix(s3_v2): upload fresh events first, drop terminal failures and hour-old retries by default, opt-in adaptive concurrency by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43022](https://github.com/BerriAI/litellm/pull/43022)
- feat(proxy): add maximum_daily_tag_spend_retention_period cleanup setting by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;39221](https://github.com/BerriAI/litellm/pull/39221)
- fix(cost-map): sync OpenRouter, Together, Cohere and Azure AI registry values with official sources by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43337](https://github.com/BerriAI/litellm/pull/43337)
- docs(pr-template): add the backport-stable label only for a P0 regression by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43351](https://github.com/BerriAI/litellm/pull/43351)
- fix(params): keep *litellm*\* kwargs out of provider request bodies by construction by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43221](https://github.com/BerriAI/litellm/pull/43221)
- test: remove substring guard test_default_api_base by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43355](https://github.com/BerriAI/litellm/pull/43355)
- ci: cut CircleCI wall time without loosening test isolation by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43347](https://github.com/BerriAI/litellm/pull/43347)
- fix(cost-map): correct azure gpt-4o-mini tts, transcribe, alias and MAI-Image-2.5 prices by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43357](https://github.com/BerriAI/litellm/pull/43357)
- fix(tests): stop VCR recording and replaying a test's own localhost upstream by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43346](https://github.com/BerriAI/litellm/pull/43346)
- test(integration): group /v1/messages contracts under tests/integration/messages_endpoint by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43352](https://github.com/BerriAI/litellm/pull/43352)
- fix(params): validate stream_chunk_size once, before any provider call by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43222](https://github.com/BerriAI/litellm/pull/43222)
- fix(openai): exclude fine-tuned and custom gpt-5-chat aliases from gpt-5 reasoning path by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43185](https://github.com/BerriAI/litellm/pull/43185)
- fix(langtrace): deliver spans to app.langtrace.ai/api/trace with x-api-key by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43322](https://github.com/BerriAI/litellm/pull/43322)
- fix(caching): stand default cache points down when extra_body hides a direct client mark by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43341](https://github.com/BerriAI/litellm/pull/43341)
- fix(mcp): report reachability without stored credentials by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43240](https://github.com/BerriAI/litellm/pull/43240)
- fix(mcp): align hub publication status and controls by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43241](https://github.com/BerriAI/litellm/pull/43241)
- chore(cost-map): sync openrouter prices for deepseek, minimax, qwen and glm rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43384](https://github.com/BerriAI/litellm/pull/43384)
- chore(cost-map): drop stale cache hit field from openrouter deepseek-v4-pro-0813 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43389](https://github.com/BerriAI/litellm/pull/43389)
- fix(responses): stream guardrail pre-call block as SSE with a typed output item by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42507](https://github.com/BerriAI/litellm/pull/42507)
- feat(e2e): read management routes back from the control plane replicas by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43373](https://github.com/BerriAI/litellm/pull/43373)
- feat(rust): add the openai_like chat config foundation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43379](https://github.com/BerriAI/litellm/pull/43379)
- feat(router): opt in to prompt-cache cost routing by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43232](https://github.com/BerriAI/litellm/pull/43232)
- feat(otel): add SigNoz preset for OpenTelemetry v2 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43296](https://github.com/BerriAI/litellm/pull/43296)
- feat(cli): reuse saved agent setup and add reconfigure by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43392](https://github.com/BerriAI/litellm/pull/43392)
- fix(streaming): keep litellm Usage on text-completion usage chunks by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43047](https://github.com/BerriAI/litellm/pull/43047)
- fix(vertex_ai): consider tools when validating context caching min tokens by [@&#8203;agustin18](https://github.com/agustin18) in [#&#8203;43319](https://github.com/BerriAI/litellm/pull/43319)
- fix(anthropic): drop thinking blocks with empty thinking text, not just missing signature by [@&#8203;shoemoney](https://github.com/shoemoney) in [#&#8203;38049](https://github.com/BerriAI/litellm/pull/38049)
- test(e2e): report batch cleanup leftovers as a plain UserWarning by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43405](https://github.com/BerriAI/litellm/pull/43405)
- fix(tools): salvage concatenated JSON tool call arguments by [@&#8203;kumarpriyanshu09](https://github.com/kumarpriyanshu09) in [#&#8203;43260](https://github.com/BerriAI/litellm/pull/43260)
- fix(gemini): forward seed to the Gemini API instead of rejecting it by [@&#8203;YaseenBashaT](https://github.com/YaseenBashaT) in [#&#8203;43197](https://github.com/BerriAI/litellm/pull/43197)
- fix(vertex_ai): make Gemma fake streams work with traced Responses by [@&#8203;stewartpark](https://github.com/stewartpark) in [#&#8203;43147](https://github.com/BerriAI/litellm/pull/43147)
- fix(responses): emit the reasoning item on streaming /v1/responses for signature-only thinking by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43414](https://github.com/BerriAI/litellm/pull/43414)
- fix(anthropic): forward the per-turn-control beta to Azure AI Foundry by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43415](https://github.com/BerriAI/litellm/pull/43415)
- test(vertex_ai): assert the usage the Gemma responses stream actually reports by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43422](https://github.com/BerriAI/litellm/pull/43422)
- fix(bedrock): keep the provider status code on unprocessable image errors by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43416](https://github.com/BerriAI/litellm/pull/43416)
- fix(vertex_ai): stop importing the vertexai SDK in partner-model completion by [@&#8203;anmolg1997](https://github.com/anmolg1997) in [#&#8203;42274](https://github.com/BerriAI/litellm/pull/42274)
- fix(token_counter): count Gemini function_declarations tools by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43417](https://github.com/BerriAI/litellm/pull/43417)
- refactor(types): replace Any with proven types in 5 files by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43304](https://github.com/BerriAI/litellm/pull/43304)
- chore(cost-map): update azure_ai/grok-4.6 input price from Azure pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43440](https://github.com/BerriAI/litellm/pull/43440)
- chore(cost-map): add azure_ai/MAI-Cyber-1-Flash by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43446](https://github.com/BerriAI/litellm/pull/43446)
- refactor(rust): share anthropic types, request helpers, and streaming contracts across crates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43426](https://github.com/BerriAI/litellm/pull/43426)
- feat(rust): expand gateway configuration parsing by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43460](https://github.com/BerriAI/litellm/pull/43460)
- refactor(rust): share call lifecycle across route-owned inference by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43461](https://github.com/BerriAI/litellm/pull/43461)
- feat(rust): add the HTTP host driver by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43462](https://github.com/BerriAI/litellm/pull/43462)
- build(rust): package the gateway container by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43471](https://github.com/BerriAI/litellm/pull/43471)
- refactor(rust): use shared execution in gateway inference by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43463](https://github.com/BerriAI/litellm/pull/43463)
- fix(cost-map): add deprecation_date to together_ai Salesforce/Llama-Rank-V1 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43507](https://github.com/BerriAI/litellm/pull/43507)
- feat(rust): support the HTTP Responses API by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43464](https://github.com/BerriAI/litellm/pull/43464)
- fix(cost-map): sync openrouter prices from the models API by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43506](https://github.com/BerriAI/litellm/pull/43506)
- fix(cost-map): set together_ai gpt-oss-20b and gemma-4-31B-it deprecation_date to 2026-09-15 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43509](https://github.com/BerriAI/litellm/pull/43509)
- feat(rust): add litellm-db and litellm-db-testing workspace scaffolding by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43504](https://github.com/BerriAI/litellm/pull/43504)
- feat(rust): connect Python inference bindings to shared routes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43465](https://github.com/BerriAI/litellm/pull/43465)
- feat(rust): add structured route lifecycle tracing by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43466](https://github.com/BerriAI/litellm/pull/43466)
- feat(rust): separate gateway authentication and authorization by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43467](https://github.com/BerriAI/litellm/pull/43467)
- feat(rust): add virtual key storage contracts by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43468](https://github.com/BerriAI/litellm/pull/43468)
- feat(rust): add gateway UI login and sessions by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43469](https://github.com/BerriAI/litellm/pull/43469)
- feat(rust): add the MCP gateway by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43470](https://github.com/BerriAI/litellm/pull/43470)
- refactor(rust): remove delivery routing abstraction by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43514](https://github.com/BerriAI/litellm/pull/43514)
- feat(azure): add mistral ocr pricing and azure max output limits by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43530](https://github.com/BerriAI/litellm/pull/43530)
- refactor: clean up fresh tech debt from 2026-09-27 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43538](https://github.com/BerriAI/litellm/pull/43538)
- refactor(types): replace Any with proven types in 8 files by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43551](https://github.com/BerriAI/litellm/pull/43551)
- test(rust): enforce shared upstream error contract in wheel checks by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43520](https://github.com/BerriAI/litellm/pull/43520)
- fix(proxy): log key owner identity on expired key auth failures by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43105](https://github.com/BerriAI/litellm/pull/43105)
- fix(cost-map): registry audit 2026-09-28, openai deep-research shutdown dates, azure deepseek v4.1 flash direct price, vertex gemini 3.8 live avatar price, drop azure_ai/muse-spark-1.3 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43566](https://github.com/BerriAI/litellm/pull/43566)
- security(proxy): keep team callback credentials out of the stored request body by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43217](https://github.com/BerriAI/litellm/pull/43217)
- feat(model_prices): add claude-sonnet-5-5 model pricing by [@&#8203;krrish-berri-2](https://github.com/krrish-berri-2) in [#&#8203;43586](https://github.com/BerriAI/litellm/pull/43586)
- test(integration): pin org-admin status codes in the team-admin matrix by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43592](https://github.com/BerriAI/litellm/pull/43592)
- refactor(guardrails): fix agent 365 to the production endpoint and log the opt-in fail_open at error level by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43189](https://github.com/BerriAI/litellm/pull/43189)
- fix(model_prices): correct Claude Sonnet 5.5 capabilities and provider keys by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43587](https://github.com/BerriAI/litellm/pull/43587)
- test(unit): stop test modules from putting their own directory on sys.path by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43421](https://github.com/BerriAI/litellm/pull/43421)
- refactor(rust): centralize host execution and compose callbacks by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43515](https://github.com/BerriAI/litellm/pull/43515)
- fix(proxy): unregister logging callbacks removed from the stored config by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43428](https://github.com/BerriAI/litellm/pull/43428)
- chore(cost-map): take azure limits for deepseek-v4-flash-0731 and v3.2-speciale by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43597](https://github.com/BerriAI/litellm/pull/43597)
- revert: "feat(proxy): server-side Team Usage export beyond the top-N key cap ([#&#8203;42996](https://github.com/BerriAI/litellm/issues/42996))" by [@&#8203;yassin-berriai](https://github.com/yassin-berriai) in [#&#8203;43376](https://github.com/BerriAI/litellm/pull/43376)
- fix(cost-map): add web search flag and model page source to anthropic claude-sonnet-5-5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43584](https://github.com/BerriAI/litellm/pull/43584)
- refactor(mcp): consolidate hub publication predicate by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43394](https://github.com/BerriAI/litellm/pull/43394)
- fix(provider): accept 2xx status codes in unified_access_group create by [@&#8203;Louis-Vauterin](https://github.com/Louis-Vauterin) in [#&#8203;42461](https://github.com/BerriAI/litellm/pull/42461)
- fix(panw_prisma_airs): honor experimental_use_latest_role_message_only on every request shape by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42447](https://github.com/BerriAI/litellm/pull/42447)
- fix(cost-map): add Vertex batch cache prices to vertex_ai/claude-sonnet-5-5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43602](https://github.com/BerriAI/litellm/pull/43602)
- revert: "feat(usage): search team keys beyond the top-N in the Team usage view ([#&#8203;42857](https://github.com/BerriAI/litellm/issues/42857))" by [@&#8203;yassin-berriai](https://github.com/yassin-berriai) in [#&#8203;43377](https://github.com/BerriAI/litellm/pull/43377)
- feat(providers): add Prism provider (internal copy of [#&#8203;40914](https://github.com/BerriAI/litellm/issues/40914)) by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;41961](https://github.com/BerriAI/litellm/pull/41961)
- test(integration): credential canary suite harness by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43300](https://github.com/BerriAI/litellm/pull/43300)
- feat(bedrock): add xai grok-4.7 pricing and sync llama, mistral large 2407 and minimax m2.5 prices by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43623](https://github.com/BerriAI/litellm/pull/43623)
- ci: sync the weekly release cycle with Linear releases by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43636](https://github.com/BerriAI/litellm/pull/43636)
- feat(cache): select Rust caching through explicit cache objects by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43601](https://github.com/BerriAI/litellm/pull/43601)
- test(integration): credential canary slots for MCP and pass-through credentials by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43308](https://github.com/BerriAI/litellm/pull/43308)
- test(integration): stored-config credential canary slots by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43309](https://github.com/BerriAI/litellm/pull/43309)
- fix(guardrails): preserve Presidio output selection and restoration by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43401](https://github.com/BerriAI/litellm/pull/43401)
- fix(ui): rename All Models tab to Deployed Models and model filters to All Proxy Models by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43638](https://github.com/BerriAI/litellm/pull/43638)
- feat(mcp): scan and pin upstream tool descriptions by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43283](https://github.com/BerriAI/litellm/pull/43283)
- feat(cost-map): add bedrock_mantle rows for claude opus 5.5 and sonnet 5.5 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43647](https://github.com/BerriAI/litellm/pull/43647)
- chore(codeowners): drop UI, migration, and CODEOWNERS self owners by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43653](https://github.com/BerriAI/litellm/pull/43653)
- feat(fireworks_ai): route and list the auto, auto-instant and firerouter routers by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43641](https://github.com/BerriAI/litellm/pull/43641)
- feat: add model leaderboard page by [@&#8203;ishaan-berri](https://github.com/ishaan-berri) in [#&#8203;43649](https://github.com/BerriAI/litellm/pull/43649)
- fix(google_genai): preserve proxy_server_request in completion adapter by [@&#8203;hsm207](https://github.com/hsm207) in [#&#8203;43536](https://github.com/BerriAI/litellm/pull/43536)
- fix(otel): send cache and reasoning tokens in langfuse usage_details by [@&#8203;ankit373](https://github.com/ankit373) in [#&#8203;43553](https://github.com/BerriAI/litellm/pull/43553)
- fix(vertex_ai): forward the per-turn-control beta for per-message output_config by [@&#8203;DeviaVir](https://github.com/DeviaVir) in [#&#8203;43558](https://github.com/BerriAI/litellm/pull/43558)
- fix(cost-map): add tool calling and reasoning flags, correct max output for nebius DeepSeek-V4.1-Flash by [@&#8203;Flexomatic81](https://github.com/Flexomatic81) in [#&#8203;43588](https://github.com/BerriAI/litellm/pull/43588)
- fix(proxy): resolve model_group_alias in the zero-cost budget predicate by [@&#8203;fedaeho](https://github.com/fedaeho) in [#&#8203;43512](https://github.com/BerriAI/litellm/pull/43512)
- refactor: clean up fresh tech debt from 2026-09-28 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43674](https://github.com/BerriAI/litellm/pull/43674)
- refactor(types): replace Any with proven types in 7 files by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43704](https://github.com/BerriAI/litellm/pull/43704)
- docs(security): point readers to the security announcements mailing list signup by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43713](https://github.com/BerriAI/litellm/pull/43713)
- refactor(rust): add shared llms wire type derives by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43730](https://github.com/BerriAI/litellm/pull/43730)
- fix(router): stream /v1/messages lifecycle frames live when no fallback can take over by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43600](https://github.com/BerriAI/litellm/pull/43600)
- feat(cost-map): add baseten DeepSeek-V4.1-Flash-Fast by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43735](https://github.com/BerriAI/litellm/pull/43735)
- feat(guardrails): send a configured gateway_name from noma_v2 to Noma by [@&#8203;itaimodi](https://github.com/itaimodi) in [#&#8203;43678](https://github.com/BerriAI/litellm/pull/43678)
- chore(cost-map): add openai gpt-6.1-sol from the pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43738](https://github.com/BerriAI/litellm/pull/43738)
- test(integration): callback credential canary slots C1-C3 and D5 by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43630](https://github.com/BerriAI/litellm/pull/43630)
- test(integration): request-path credential canary slots D1-D4 by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43307](https://github.com/BerriAI/litellm/pull/43307)
- test(integration): sweep proxy logs, metrics, a Datadog intake and the Logs drawer for credential canaries by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43306](https://github.com/BerriAI/litellm/pull/43306)
- chore(cost-map): add azure and openrouter gpt-6.1-sol rows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43744](https://github.com/BerriAI/litellm/pull/43744)
- test(proxy): classify every credential-bearing param for the canary suite by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43298](https://github.com/BerriAI/litellm/pull/43298)
- fix(cost-map): lower fireworks up-to-4b size tier to the pricing page price by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43740](https://github.com/BerriAI/litellm/pull/43740)
- fix(cost_calculator): bill chat per-second pricing once with a new cost_per_second field by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43614](https://github.com/BerriAI/litellm/pull/43614)
- chore(cost-map): add openai gpt-6-astra ultrafast tier prices from the pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43745](https://github.com/BerriAI/litellm/pull/43745)
- fix(autorouter): compare historical and new savings consistently by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43348](https://github.com/BerriAI/litellm/pull/43348)
- fix(model-prices): align Azure, Bedrock, Copilot, Gemini, Groq, OpenAI and OpenRouter entries with official docs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43598](https://github.com/BerriAI/litellm/pull/43598)
- fix(guardrails): enable explicit PANW MCP output scanning by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43109](https://github.com/BerriAI/litellm/pull/43109)
- refactor(rust): orchestrate Messages route execution by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43719](https://github.com/BerriAI/litellm/pull/43719)
- fix(streaming): keep the served service_tier on streamed chunks and spend rows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42870](https://github.com/BerriAI/litellm/pull/42870)
- feat(bedrock): add openai gpt-6.1-sol global and base rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43758](https://github.com/BerriAI/litellm/pull/43758)
- perf(router): fetch cooldown state and usage counters in one Redis round trip by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43320](https://github.com/BerriAI/litellm/pull/43320)
- perf(proxy): hold one spend counter batch across admission and across post-call accounting by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43369](https://github.com/BerriAI/litellm/pull/43369)
- perf(responses): run aresponses through the async wrapper so the cache is read once by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43769](https://github.com/BerriAI/litellm/pull/43769)
- fix(router): bind Claude Code background sessions to their auto-router by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43767](https://github.com/BerriAI/litellm/pull/43767)
- feat(bedrock): add openai.gpt-6.1-sol us geo cris and Mantle rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43763](https://github.com/BerriAI/litellm/pull/43763)
- fix(proxy): recover session key owners from daily spend for usage attribution by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43642](https://github.com/BerriAI/litellm/pull/43642)
- chore(cost-map): take azure context limits from models-sold-directly by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43759](https://github.com/BerriAI/litellm/pull/43759)
- perf(proxy): one request-scoped Redis pipeline for auth, spend, rate-limit and routing reads by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43407](https://github.com/BerriAI/litellm/pull/43407)
- fix(mcp): scope OpenAPI listings to the exact server prefix and drop upstream OAuth metadata when a server is saved by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43608](https://github.com/BerriAI/litellm/pull/43608)
- perf(proxy): one post-call Redis pipeline per backend for spend, rate-limit, routing and response-cache writes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43779](https://github.com/BerriAI/litellm/pull/43779)
- fix(bedrock): set gpt-6.1-sol max output tokens to 131072 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43782](https://github.com/BerriAI/litellm/pull/43782)
- perf(proxy): refresh auth management objects through the request Redis pipeline by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43776](https://github.com/BerriAI/litellm/pull/43776)
- feat(agents): add identity storage and validation contracts by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43720](https://github.com/BerriAI/litellm/pull/43720)
- chore: bump litellm-enterprise 0.1.71 -> 0.1.72, litellm-proxy-extras 0.4.102 -> 0.4.103, litellm 1.104.0 -> 1.105.0 by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43789](https://github.com/BerriAI/litellm/pull/43789)
- fix(auth): give UI/CLI session tokens their own AES-GCM context and header-safe shape by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43790](https://github.com/BerriAI/litellm/pull/43790)
- chore(deps): bump pyjwt, moment and brace-expansion to clear osv-scan by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43792](https://github.com/BerriAI/litellm/pull/43792)
- fix(ui): surface x-litellm-call-id in Logs search, table and drawer by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42436](https://github.com/BerriAI/litellm/pull/42436)
- fix(proxy): look up hashed key names with two spend log rows per key by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43656](https://github.com/BerriAI/litellm/pull/43656)
- fix(cost-map): add deprecation_date to two together_ai nvidia rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43809](https://github.com/BerriAI/litellm/pull/43809)
- test(ci): refresh retired OpenAI tool-call models by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43676](https://github.com/BerriAI/litellm/pull/43676)
- fix(ui): keep MCP permissions visible after key, team and MCP server saves by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43810](https://github.com/BerriAI/litellm/pull/43810)
- test(ci): repair MCP Responses and budget fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43788](https://github.com/BerriAI/litellm/pull/43788)
- test(bedrock): accept regional aliases that inherit Converse routing by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43785](https://github.com/BerriAI/litellm/pull/43785)
- fix(params): categorize internal param appropriately to prevent leaking into request by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43783](https://github.com/BerriAI/litellm/pull/43783)
- perf(router): honour the cooldown read interval in the routing prefetch by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43815](https://github.com/BerriAI/litellm/pull/43815)
- fix(router): carry per-request routing reads on context variables instead of public method kwargs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43814](https://github.com/BerriAI/litellm/pull/43814)
- fix(bedrock): add beta header for output config in message by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43778](https://github.com/BerriAI/litellm/pull/43778)
- refactor: clean up fresh tech debt from 2026-09-29 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43830](https://github.com/BerriAI/litellm/pull/43830)
- test(router): settle the shared logging worker before recording shadow callbacks by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43847](https://github.com/BerriAI/litellm/pull/43847)
- chore(model_prices): add Gemini Veo, Mistral and Azure Claude 4.5 deprecation dates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43857](https://github.com/BerriAI/litellm/pull/43857)
- fix(cost_calculator): bill ultrafast prompts above 272k at the ultrafast long-context rates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43764](https://github.com/BerriAI/litellm/pull/43764)
- refactor(rust): centralize Python bridge execution wrappers by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43871](https://github.com/BerriAI/litellm/pull/43871)
- chore(cost-map): add openai gpt-image-2.5 batch prices from the pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43869](https://github.com/BerriAI/litellm/pull/43869)
- chore(cost-map): add fireworks priority prices for ember-1, nemotron and glm 5.3 us rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43811](https://github.com/BerriAI/litellm/pull/43811)
- fix(proxy): attribute completed batch cost rows to /batches in daily activity by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43870](https://github.com/BerriAI/litellm/pull/43870)
- fix(router): strip encrypted reasoning the pinned deployment cannot decrypt by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43781](https://github.com/BerriAI/litellm/pull/43781)
- fix(cost_calculator): stop copying optional_params into response hidden params by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43637](https://github.com/BerriAI/litellm/pull/43637)
- feat(pricing): add vertex_ai gemini-3.8 flash tts rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43876](https://github.com/BerriAI/litellm/pull/43876)
- fix(proxy): keep request-body credentials out of stored spend-log requests by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43635](https://github.com/BerriAI/litellm/pull/43635)
- fix(ui): right-align money and count columns across tables by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;37889](https://github.com/BerriAI/litellm/pull/37889)
- feat(agents): enforce authoritative agent permissions by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43721](https://github.com/BerriAI/litellm/pull/43721)
- fix(proxy): strip caller credentials from websocket passthrough by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43855](https://github.com/BerriAI/litellm/pull/43855)
- fix(ui): render access group MCP and agent selections as wrapping chips by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;41228](https://github.com/BerriAI/litellm/pull/41228)
- fix(responses): scan and mask top-level instructions with guardrails by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43629](https://github.com/BerriAI/litellm/pull/43629)
- feat(traces): add Rust storage foundation by [@&#8203;yujonglee-berri](https://github.com/yujonglee-berri) in [#&#8203;43819](https://github.com/BerriAI/litellm/pull/43819)
- feat(ui): agent traces tab on logs with timeline and otel setup guide by [@&#8203;ishaan-berri](https://github.com/ishaan-berri) in [#&#8203;43891](https://github.com/BerriAI/litellm/pull/43891)
- feat(otel v2): excluded_services opt-out for datastore spans on tenant destinations by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43278](https://github.com/BerriAI/litellm/pull/43278)
- fix(traces): correct ClickHouse rollup partitioning, dedupe keys, and retention changes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43901](https://github.com/BerriAI/litellm/pull/43901)
- fix(bedrock): keep applicable beta headers by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43829](https://github.com/BerriAI/litellm/pull/43829)
- feat(agents): authenticate Entra identities and delegated requests by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43722](https://github.com/BerriAI/litellm/pull/43722)
- fix(hosted_vllm): keep reasoning_content on replayed assistant messages by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43599](https://github.com/BerriAI/litellm/pull/43599)
- fix(proxy): delete large teams without per-member transaction fan-out by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42998](https://github.com/BerriAI/litellm/pull/42998)
- feat(tracing): port OTLP ingestion to current trace foundation by [@&#8203;yujonglee-berri](https://github.com/yujonglee-berri) in [#&#8203;43915](https://github.com/BerriAI/litellm/pull/43915)
- feat(proxy): add native ROI calculator for gateway spend vs merged PRs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43669](https://github.com/BerriAI/litellm/pull/43669)
- test(e2e): repair completion, SAIL, and spend-log fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43902](https://github.com/BerriAI/litellm/pull/43902)
- test(s3_v2): pin async 5xx retry through the production AsyncHTTPHandler by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43080](https://github.com/BerriAI/litellm/pull/43080)
- feat(ui): adopt the new LiteLLM logo and monogram by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43913](https://github.com/BerriAI/litellm/pull/43913)
- fix(proxy): relay Azure passthrough body model groups through the router by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43896](https://github.com/BerriAI/litellm/pull/43896)
- fix(proxy): register a UI-configured arize callback next to otel under OTel v2 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43906](https://github.com/BerriAI/litellm/pull/43906)
- fix(transcription): honor base_url alias for Groq Whisper and report it as the api base by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43917](https://github.com/BerriAI/litellm/pull/43917)
- feat(tracing): store spend in ClickHouse automatically by [@&#8203;yujonglee-berri](https://github.com/yujonglee-berri) in [#&#8203;43928](https://github.com/BerriAI/litellm/pull/43928)
- fix(packaging): keep wheel paths under Windows MAX_PATH for Store Python by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43903](https://github.com/BerriAI/litellm/pull/43903)
- feat(agents): add identity registration and dashboard controls by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43723](https://github.com/BerriAI/litellm/pull/43723)
- refactor(proxy): answer every team access check with TeamAccess.allows by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43364](https://github.com/BerriAI/litellm/pull/43364)
- test(bedrock): restore the AWS env after a failed live call in the auth tests by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43921](https://github.com/BerriAI/litellm/pull/43921)
- feat(lens): analyze agent activity with a separate worker by [@&#8203;moe-berri](https://github.com/moe-berri) in [#&#8203;43889](https://github.com/BerriAI/litellm/pull/43889)
- fix(router): bill service tiers at catalog rates for custom-priced deployments by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43890](https://github.com/BerriAI/litellm/pull/43890)
- test(ci): refresh qualified retired OpenAI fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43938](https://github.com/BerriAI/litellm/pull/43938)
- fix(anthropic): forward the dangerous-tool-use beta to Azure AI Foundry by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43934](https://github.com/BerriAI/litellm/pull/43934)
- test(proxy): scope user_api_key_auth overrides in proxy_server tests by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43952](https://github.com/BerriAI/litellm/pull/43952)
- fix(wandb): set supports_vision true on GLM-5.3-Flash by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43951](https://github.com/BerriAI/litellm/pull/43951)
- chore(cost-map): sync openrouter prices from the models API by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43950](https://github.com/BerriAI/litellm/pull/43950)
- fix(grayswan): send request conversation and tool calls to post-call monitor by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43770](https://github.com/BerriAI/litellm/pull/43770)
- fix(azure_storage): name Data Lake objects without base64 padding or slashes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43914](https://github.com/BerriAI/litellm/pull/43914)
- fix(guardrails): treat an unknown straiker api_version as unset instead of skipping the guardrail by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43956](https://github.com/BerriAI/litellm/pull/43956)
- chore(deps): bump gitpython and tornado, extend diskcache osv ignore to Nov 1 by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43961](https://github.com/BerriAI/litellm/pull/43961)
- fix(azure_storage): keep the DataLakeServiceClient alive until its TTL elapses by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43082](https://github.com/BerriAI/litellm/pull/43082)
- feat(proxy): record in spend logs whether a request used a client-forwarded Anthropic OAuth token by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43063](https://github.com/BerriAI/litellm/pull/43063)
- test(ci): repair stale tests and move retired OpenAI text-completion fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43958](https://github.com/BerriAI/litellm/pull/43958)
- feat(e2e): record each e2e test's steps, starting with ProxyClient by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;42393](https://github.com/BerriAI/litellm/pull/42393)
- feat(providers): add Cortecs as an OpenAI-compatible provider by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43872](https://github.com/BerriAI/litellm/pull/43872)
- feat(ui): filter tags by name and description on the Tag Management page by [@&#8203;galovics](https://github.com/galovics) in [#&#8203;42949](https://github.com/BerriAI/litellm/pull/42949)
- fix(caching): write the response-cache SET to Redis at once instead of on the post-call batch by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43973](https://github.com/BerriAI/litellm/pull/43973)
- test(e2e): typed per-test metadata for the e2e suite by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;42044](https://github.com/BerriAI/litellm/pull/42044)
- feat(guardrails): honor litellm_params.timeout in every HTTP guardrail by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43134](https://github.com/BerriAI/litellm/pull/43134)
- chore(cost-map): add fireworks inkling priority prices from the prices api by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43949](https://github.com/BerriAI/litellm/pull/43949)
- chore(cost-map): add deprecation date for anthropic claude-sonnet-4-5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43898](https://github.com/BerriAI/litellm/pull/43898)
- fix(cost-map): raise baseten DeepSeek-V4.1-Flash max output to 262144 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43916](https://github.com/BerriAI/litellm/pull/43916)
- fix(proxy): restore pre-config-wins handling of pass-through endpoints by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43962](https://github.com/BerriAI/litellm/pull/43962)
- feat(lens): investigate sampled traces and retain batch results by [@&#8203;moe-berri](https://github.com/moe-berri) in [#&#8203;43942](https://github.com/BerriAI/litellm/pull/43942)
- fix(guardrails): scan Responses API input in Azure Prompt Shield by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43786](https://github.com/BerriAI/litellm/pull/43786)
- fix(guardrails): scan Responses API input in Azure Text Moderation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43965](https://github.com/BerriAI/litellm/pull/43965)
- refactor: clean up fresh tech debt from 2026-09-30 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43993](https://github.com/BerriAI/litellm/pull/43993)
- test: inject the HIBP client and the MCP loop clock so two backend tests stop flaking by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;44007](https://github.com/BerriAI/litellm/pull/44007)
- fix(cost-map): reprice fireworks deepseek v4.1 flash to the 2026-10-01 pricing up…
Exikle pushed a commit to Exikle/Artemis-Cluster that referenced this pull request Oct 14, 2026
…105.0) (#2711)

🔵 **minor** · ghcr.io/berriai/litellm

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/berriai/litellm](https://images.chainguard.dev/directory/image/wolfi-base/overview) ([source](https://github.com/BerriAI/litellm)) | minor | `v1.104.2` → `v1.105.0` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/107) for more information.

> ⛔ **Do not automerge.** v1.99.0 silently flipped the MCP `allow_all_keys` default and emptied every tool list.

---

### Release Notes

<details>
<summary>BerriAI/litellm (ghcr.io/berriai/litellm)</summary>

### [`v1.105.0`](https://github.com/BerriAI/litellm/releases/tag/v1.105.0)

[Compare Source](https://github.com/BerriAI/litellm/compare/v1.104.3...v1.105.0)

#### Verify Docker Image Signature

All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). Every release is signed with the same key introduced in [commit `0112e53`](https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0).

**Verify using the pinned commit hash (recommended):**

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

```bash
cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.105.0
```

**Verify using the release tag (convenience):**

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

```bash
cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.105.0/cosign.pub \
  ghcr.io/berriai/litellm:v1.105.0
```

Expected output:

```
The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key
```

***

#### What's Changed

- feat(mcp): share compatibility-aware result conversion across tool surfaces by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43089](https://github.com/BerriAI/litellm/pull/43089)
- fix(caching): propagate auth cache invalidation over Redis Cluster via a node-level pub/sub client by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43110](https://github.com/BerriAI/litellm/pull/43110)
- feat(model-catalog): add Rust registry validation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43136](https://github.com/BerriAI/litellm/pull/43136)
- test(rust): reorganize core crate tests and split cache and OCR suites by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43177](https://github.com/BerriAI/litellm/pull/43177)
- fix(proxy): give SpendLogToolIndex its own share of the cleanup budget and log a per-run summary by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;41768](https://github.com/BerriAI/litellm/pull/41768)
- feat(rust): hand upstream response headers to the native Messages stream by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43178](https://github.com/BerriAI/litellm/pull/43178)
- feat(testkit): agent clients for Claude Code, Codex and opencode by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43181](https://github.com/BerriAI/litellm/pull/43181)
- ci: run migrated unit selections on every event in legacy GHA shards by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43182](https://github.com/BerriAI/litellm/pull/43182)
- test: move tests/test_litellm root and small trees into tests/unit by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43186](https://github.com/BerriAI/litellm/pull/43186)
- fix(sso): gate /sso/debug routes behind ENABLE_SSO_DEBUG, off by default by [@&#8203;ojensen-berri](https://github.com/ojensen-berri) in [#&#8203;43150](https://github.com/BerriAI/litellm/pull/43150)
- refactor(framer): replace Framer trait with tokio-util codecs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43193](https://github.com/BerriAI/litellm/pull/43193)
- fix(anthropic): surface Responses bridge stream failures as Anthropic error events by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43126](https://github.com/BerriAI/litellm/pull/43126)
- test: move tests/test_litellm/llms into tests/unit/llms by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43191](https://github.com/BerriAI/litellm/pull/43191)
- test: move tests/test_litellm integrations and secret_managers into tests/unit by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43194](https://github.com/BerriAI/litellm/pull/43194)
- feat(mcp): configure protocol versions and capability discovery by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43169](https://github.com/BerriAI/litellm/pull/43169)
- fix(proxy): record streamed /v1/responses container ownership before the response.completed frame by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43140](https://github.com/BerriAI/litellm/pull/43140)
- fix(tests): drop the repeated UNIT_FLAG key in test_unit_shard_missing_paths by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43212](https://github.com/BerriAI/litellm/pull/43212)
- fix(router): count provider budget spend on every API surface by [@&#8203;daqiangganjun](https://github.com/daqiangganjun) in [#&#8203;38172](https://github.com/BerriAI/litellm/pull/38172)
- fix(responses): fall back on pre-output stream drops, fail truncated streams, honor request_timeout by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43133](https://github.com/BerriAI/litellm/pull/43133)
- fix(sentry): scrub PII and secrets inside object reprs and nested locals, add SENTRY_SEND_DEFAULT_PII opt-in by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43123](https://github.com/BerriAI/litellm/pull/43123)
- fix(bedrock): surface a converse-stream 200 that decodes to no events as a 502 instead of an empty turn by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43213](https://github.com/BerriAI/litellm/pull/43213)
- fix(jwt): let x-litellm-team-id select DB membership teams when the token also carries a team claim by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43206](https://github.com/BerriAI/litellm/pull/43206)
- feat(integrations): add Databricks Zerobus trace logging callback by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42013](https://github.com/BerriAI/litellm/pull/42013)
- fix(vertex_ai): keep legacy bucket_name in credential resolution and add GCS_BATCH_BUCKET_NAME env var by [@&#8203;mubashir1osmani](https://github.com/mubashir1osmani) in [#&#8203;42803](https://github.com/BerriAI/litellm/pull/42803)
- feat(xai): add native xAI batches and files support by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42812](https://github.com/BerriAI/litellm/pull/42812)
- fix(proxy): send a real error event when a /v1/messages stream fails by [@&#8203;4refael](https://github.com/4refael) in [#&#8203;41826](https://github.com/BerriAI/litellm/pull/41826)
- fix(logging): redact raw_request when turn_off_message_logging is set in the proxy config by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43219](https://github.com/BerriAI/litellm/pull/43219)
- fix(router): parse the classifier verdict out of surrounding prose instead of falling to the default tier by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43215](https://github.com/BerriAI/litellm/pull/43215)
- test(zerobus): move tests into active CI selection by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43235](https://github.com/BerriAI/litellm/pull/43235)
- fix(proxy): keep the submitted body out of 422 validation errors by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43231](https://github.com/BerriAI/litellm/pull/43231)
- test: move tests/test_litellm core utils, routing, responses, caching and rust_bridge into tests/unit by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43199](https://github.com/BerriAI/litellm/pull/43199)
- chore(cost-map): add fireworks us-only deepseek v4.1 flash priority prices by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43247](https://github.com/BerriAI/litellm/pull/43247)
- chore(cost-map): sync openrouter prices and add perceptron-mk1.5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43246](https://github.com/BerriAI/litellm/pull/43246)
- fix(cost-map): correct fireworks_ai deepseek-v4p1-flash pricing by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43253](https://github.com/BerriAI/litellm/pull/43253)
- feat(openrouter): add typesafe/jev-router to the cost map by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43248](https://github.com/BerriAI/litellm/pull/43248)
- chore(cost-map): add fireworks priority prices for muse glimmer 30b and deepseek v4 flash vision exp by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43252](https://github.com/BerriAI/litellm/pull/43252)
- refactor(rust): move credential inheritance and SDK limits into a driver preflight by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43259](https://github.com/BerriAI/litellm/pull/43259)
- fix(router): hold Responses lifecycle events until output so a pre-output fallback announces one response by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43238](https://github.com/BerriAI/litellm/pull/43238)
- refactor(http): hand out an owned Client and route all providers through the pool by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43245](https://github.com/BerriAI/litellm/pull/43245)
- test: fix stale and state-leaking tests red on scheduled CircleCI by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43266](https://github.com/BerriAI/litellm/pull/43266)
- fix(cost-map): retirement dates, chatgpt reasoning flags, bing pricing, bedrock mantle and mythos, azure gpt-5.6 alias, anthropic batch rates, new nebius, openrouter and xai rows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42951](https://github.com/BerriAI/litellm/pull/42951)
- refactor(rust): promote anthropic messages out of experimental_pass_through by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43269](https://github.com/BerriAI/litellm/pull/43269)
- test: stop CI tests from downloading tokenizer files and images by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43257](https://github.com/BerriAI/litellm/pull/43257)
- fix(rust): preserve nested optional import failures by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43265](https://github.com/BerriAI/litellm/pull/43265)
- ci: drop main and litellm\_\* branch filters from the CircleCI litellm-main workflows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43272](https://github.com/BerriAI/litellm/pull/43272)
- feat(proxy): email alerts at configured percentages of a team member budget by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42665](https://github.com/BerriAI/litellm/pull/42665)
- fix(callbacks-legacy-python): traverse and release the retained headers dict by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43274](https://github.com/BerriAI/litellm/pull/43274)
- test(integration): port langfuse callbacks-in-db coverage to the local harness by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43282](https://github.com/BerriAI/litellm/pull/43282)
- test(e2e): accept the otel cost write as a linked root trace by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42931](https://github.com/BerriAI/litellm/pull/42931)
- test: finish the non-proxy half of tests/test_litellm by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43281](https://github.com/BerriAI/litellm/pull/43281)
- refactor(rust): prepare inference and auth foundations for the gateway by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43287](https://github.com/BerriAI/litellm/pull/43287)
- feat(rust): add config, router and gateway crates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43289](https://github.com/BerriAI/litellm/pull/43289)
- fix(cost-map): remove duplicate openrouter/perceptron/perceptron-mk1.5 entry by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43273](https://github.com/BerriAI/litellm/pull/43273)
- fix(e2e): resolve the blank-S3 gateway repo root from the litellm package location by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42911](https://github.com/BerriAI/litellm/pull/42911)
- test(integration): run the Langfuse DB-callback test on its own scratch database by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43288](https://github.com/BerriAI/litellm/pull/43288)
- refactor(rust): expand logging and test coverage across gateway and Anthropic messages by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43295](https://github.com/BerriAI/litellm/pull/43295)
- refactor: daily fresh tech debt cleanup, rolling PR (2026-09-25) by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43151](https://github.com/BerriAI/litellm/pull/43151)
- test(proxy_behavior): scope the management proxy fixture to its package so its spend monitor cannot race the spend tests by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43302](https://github.com/BerriAI/litellm/pull/43302)
- fix(cost-map): registry audit 2026-09-26, MAI-Image-2.5-Flash price, Databricks Claude Opus 5.5, Azure Foundry retirement dates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43254](https://github.com/BerriAI/litellm/pull/43254)
- fix(cost-map): price fireworks deepseek v4.1 flash at the prices api value by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43311](https://github.com/BerriAI/litellm/pull/43311)
- fix(ci): stop stale CI reds, keep unit tests off the host env, retry CyberArk policy conflicts by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43294](https://github.com/BerriAI/litellm/pull/43294)
- fix(otel): detach post-response service spans by request phase, name redis spans by operation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43237](https://github.com/BerriAI/litellm/pull/43237)
- test(e2e): assert only litellm-owned batch behavior and move the blank S3 env pin to an integration test by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43321](https://github.com/BerriAI/litellm/pull/43321)
- test(integration): pin the team-admin status-code matrix across every management route by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43249](https://github.com/BerriAI/litellm/pull/43249)
- feat(proxy): add fail_closed_rate_limit_enforcement to reject requests with 503 while Redis rate limit counters are unreachable by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43251](https://github.com/BerriAI/litellm/pull/43251)
- fix(responses): run stream failure and success hooks on the iterating loop instead of blocking it by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43270](https://github.com/BerriAI/litellm/pull/43270)
- fix(guardrails): block private destinations in custom code http_request and bound guardrail execution time by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43280](https://github.com/BerriAI/litellm/pull/43280)
- feat(sail): add Sail as a provider with service_tier mapped to its completion window by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42840](https://github.com/BerriAI/litellm/pull/42840)
- test(mcp): pin server resolution and authorization behavior by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43261](https://github.com/BerriAI/litellm/pull/43261)
- refactor(anthropic): rename experimental_pass_through to pass_through by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43329](https://github.com/BerriAI/litellm/pull/43329)
- refactor(mcp): add shared server resolver without changing callers by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43262](https://github.com/BerriAI/litellm/pull/43262)
- ci: fail on new unbounded SQL IN lists and add a Prisma chunking helper by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;42629](https://github.com/BerriAI/litellm/pull/42629)
- test(logging): drain the logging worker after each logging callback test so no later test inherits its events by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43344](https://github.com/BerriAI/litellm/pull/43344)
- feat(guardrails): scan retrieved vector store chunks with the request's pre-call guardrails by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43271](https://github.com/BerriAI/litellm/pull/43271)
- fix(mcp): adopt shared server resolution and caller authorization by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43263](https://github.com/BerriAI/litellm/pull/43263)
- fix(s3_v2): upload fresh events first, drop terminal failures and hour-old retries by default, opt-in adaptive concurrency by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43022](https://github.com/BerriAI/litellm/pull/43022)
- feat(proxy): add maximum_daily_tag_spend_retention_period cleanup setting by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;39221](https://github.com/BerriAI/litellm/pull/39221)
- fix(cost-map): sync OpenRouter, Together, Cohere and Azure AI registry values with official sources by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43337](https://github.com/BerriAI/litellm/pull/43337)
- docs(pr-template): add the backport-stable label only for a P0 regression by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43351](https://github.com/BerriAI/litellm/pull/43351)
- fix(params): keep *litellm*\* kwargs out of provider request bodies by construction by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43221](https://github.com/BerriAI/litellm/pull/43221)
- test: remove substring guard test_default_api_base by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43355](https://github.com/BerriAI/litellm/pull/43355)
- ci: cut CircleCI wall time without loosening test isolation by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43347](https://github.com/BerriAI/litellm/pull/43347)
- fix(cost-map): correct azure gpt-4o-mini tts, transcribe, alias and MAI-Image-2.5 prices by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43357](https://github.com/BerriAI/litellm/pull/43357)
- fix(tests): stop VCR recording and replaying a test's own localhost upstream by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43346](https://github.com/BerriAI/litellm/pull/43346)
- test(integration): group /v1/messages contracts under tests/integration/messages_endpoint by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43352](https://github.com/BerriAI/litellm/pull/43352)
- fix(params): validate stream_chunk_size once, before any provider call by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43222](https://github.com/BerriAI/litellm/pull/43222)
- fix(openai): exclude fine-tuned and custom gpt-5-chat aliases from gpt-5 reasoning path by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43185](https://github.com/BerriAI/litellm/pull/43185)
- fix(langtrace): deliver spans to app.langtrace.ai/api/trace with x-api-key by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43322](https://github.com/BerriAI/litellm/pull/43322)
- fix(caching): stand default cache points down when extra_body hides a direct client mark by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43341](https://github.com/BerriAI/litellm/pull/43341)
- fix(mcp): report reachability without stored credentials by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43240](https://github.com/BerriAI/litellm/pull/43240)
- fix(mcp): align hub publication status and controls by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43241](https://github.com/BerriAI/litellm/pull/43241)
- chore(cost-map): sync openrouter prices for deepseek, minimax, qwen and glm rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43384](https://github.com/BerriAI/litellm/pull/43384)
- chore(cost-map): drop stale cache hit field from openrouter deepseek-v4-pro-0813 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43389](https://github.com/BerriAI/litellm/pull/43389)
- fix(responses): stream guardrail pre-call block as SSE with a typed output item by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42507](https://github.com/BerriAI/litellm/pull/42507)
- feat(e2e): read management routes back from the control plane replicas by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43373](https://github.com/BerriAI/litellm/pull/43373)
- feat(rust): add the openai_like chat config foundation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43379](https://github.com/BerriAI/litellm/pull/43379)
- feat(router): opt in to prompt-cache cost routing by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43232](https://github.com/BerriAI/litellm/pull/43232)
- feat(otel): add SigNoz preset for OpenTelemetry v2 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43296](https://github.com/BerriAI/litellm/pull/43296)
- feat(cli): reuse saved agent setup and add reconfigure by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43392](https://github.com/BerriAI/litellm/pull/43392)
- fix(streaming): keep litellm Usage on text-completion usage chunks by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43047](https://github.com/BerriAI/litellm/pull/43047)
- fix(vertex_ai): consider tools when validating context caching min tokens by [@&#8203;agustin18](https://github.com/agustin18) in [#&#8203;43319](https://github.com/BerriAI/litellm/pull/43319)
- fix(anthropic): drop thinking blocks with empty thinking text, not just missing signature by [@&#8203;shoemoney](https://github.com/shoemoney) in [#&#8203;38049](https://github.com/BerriAI/litellm/pull/38049)
- test(e2e): report batch cleanup leftovers as a plain UserWarning by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43405](https://github.com/BerriAI/litellm/pull/43405)
- fix(tools): salvage concatenated JSON tool call arguments by [@&#8203;kumarpriyanshu09](https://github.com/kumarpriyanshu09) in [#&#8203;43260](https://github.com/BerriAI/litellm/pull/43260)
- fix(gemini): forward seed to the Gemini API instead of rejecting it by [@&#8203;YaseenBashaT](https://github.com/YaseenBashaT) in [#&#8203;43197](https://github.com/BerriAI/litellm/pull/43197)
- fix(vertex_ai): make Gemma fake streams work with traced Responses by [@&#8203;stewartpark](https://github.com/stewartpark) in [#&#8203;43147](https://github.com/BerriAI/litellm/pull/43147)
- fix(responses): emit the reasoning item on streaming /v1/responses for signature-only thinking by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43414](https://github.com/BerriAI/litellm/pull/43414)
- fix(anthropic): forward the per-turn-control beta to Azure AI Foundry by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43415](https://github.com/BerriAI/litellm/pull/43415)
- test(vertex_ai): assert the usage the Gemma responses stream actually reports by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43422](https://github.com/BerriAI/litellm/pull/43422)
- fix(bedrock): keep the provider status code on unprocessable image errors by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43416](https://github.com/BerriAI/litellm/pull/43416)
- fix(vertex_ai): stop importing the vertexai SDK in partner-model completion by [@&#8203;anmolg1997](https://github.com/anmolg1997) in [#&#8203;42274](https://github.com/BerriAI/litellm/pull/42274)
- fix(token_counter): count Gemini function_declarations tools by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43417](https://github.com/BerriAI/litellm/pull/43417)
- refactor(types): replace Any with proven types in 5 files by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43304](https://github.com/BerriAI/litellm/pull/43304)
- chore(cost-map): update azure_ai/grok-4.6 input price from Azure pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43440](https://github.com/BerriAI/litellm/pull/43440)
- chore(cost-map): add azure_ai/MAI-Cyber-1-Flash by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43446](https://github.com/BerriAI/litellm/pull/43446)
- refactor(rust): share anthropic types, request helpers, and streaming contracts across crates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43426](https://github.com/BerriAI/litellm/pull/43426)
- feat(rust): expand gateway configuration parsing by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43460](https://github.com/BerriAI/litellm/pull/43460)
- refactor(rust): share call lifecycle across route-owned inference by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43461](https://github.com/BerriAI/litellm/pull/43461)
- feat(rust): add the HTTP host driver by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43462](https://github.com/BerriAI/litellm/pull/43462)
- build(rust): package the gateway container by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43471](https://github.com/BerriAI/litellm/pull/43471)
- refactor(rust): use shared execution in gateway inference by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43463](https://github.com/BerriAI/litellm/pull/43463)
- fix(cost-map): add deprecation_date to together_ai Salesforce/Llama-Rank-V1 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43507](https://github.com/BerriAI/litellm/pull/43507)
- feat(rust): support the HTTP Responses API by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43464](https://github.com/BerriAI/litellm/pull/43464)
- fix(cost-map): sync openrouter prices from the models API by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43506](https://github.com/BerriAI/litellm/pull/43506)
- fix(cost-map): set together_ai gpt-oss-20b and gemma-4-31B-it deprecation_date to 2026-09-15 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43509](https://github.com/BerriAI/litellm/pull/43509)
- feat(rust): add litellm-db and litellm-db-testing workspace scaffolding by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43504](https://github.com/BerriAI/litellm/pull/43504)
- feat(rust): connect Python inference bindings to shared routes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43465](https://github.com/BerriAI/litellm/pull/43465)
- feat(rust): add structured route lifecycle tracing by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43466](https://github.com/BerriAI/litellm/pull/43466)
- feat(rust): separate gateway authentication and authorization by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43467](https://github.com/BerriAI/litellm/pull/43467)
- feat(rust): add virtual key storage contracts by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43468](https://github.com/BerriAI/litellm/pull/43468)
- feat(rust): add gateway UI login and sessions by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43469](https://github.com/BerriAI/litellm/pull/43469)
- feat(rust): add the MCP gateway by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43470](https://github.com/BerriAI/litellm/pull/43470)
- refactor(rust): remove delivery routing abstraction by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43514](https://github.com/BerriAI/litellm/pull/43514)
- feat(azure): add mistral ocr pricing and azure max output limits by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43530](https://github.com/BerriAI/litellm/pull/43530)
- refactor: clean up fresh tech debt from 2026-09-27 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43538](https://github.com/BerriAI/litellm/pull/43538)
- refactor(types): replace Any with proven types in 8 files by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43551](https://github.com/BerriAI/litellm/pull/43551)
- test(rust): enforce shared upstream error contract in wheel checks by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43520](https://github.com/BerriAI/litellm/pull/43520)
- fix(proxy): log key owner identity on expired key auth failures by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43105](https://github.com/BerriAI/litellm/pull/43105)
- fix(cost-map): registry audit 2026-09-28, openai deep-research shutdown dates, azure deepseek v4.1 flash direct price, vertex gemini 3.8 live avatar price, drop azure_ai/muse-spark-1.3 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43566](https://github.com/BerriAI/litellm/pull/43566)
- security(proxy): keep team callback credentials out of the stored request body by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43217](https://github.com/BerriAI/litellm/pull/43217)
- feat(model_prices): add claude-sonnet-5-5 model pricing by [@&#8203;krrish-berri-2](https://github.com/krrish-berri-2) in [#&#8203;43586](https://github.com/BerriAI/litellm/pull/43586)
- test(integration): pin org-admin status codes in the team-admin matrix by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43592](https://github.com/BerriAI/litellm/pull/43592)
- refactor(guardrails): fix agent 365 to the production endpoint and log the opt-in fail_open at error level by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43189](https://github.com/BerriAI/litellm/pull/43189)
- fix(model_prices): correct Claude Sonnet 5.5 capabilities and provider keys by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43587](https://github.com/BerriAI/litellm/pull/43587)
- test(unit): stop test modules from putting their own directory on sys.path by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43421](https://github.com/BerriAI/litellm/pull/43421)
- refactor(rust): centralize host execution and compose callbacks by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43515](https://github.com/BerriAI/litellm/pull/43515)
- fix(proxy): unregister logging callbacks removed from the stored config by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43428](https://github.com/BerriAI/litellm/pull/43428)
- chore(cost-map): take azure limits for deepseek-v4-flash-0731 and v3.2-speciale by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43597](https://github.com/BerriAI/litellm/pull/43597)
- revert: "feat(proxy): server-side Team Usage export beyond the top-N key cap ([#&#8203;42996](https://github.com/BerriAI/litellm/issues/42996))" by [@&#8203;yassin-berriai](https://github.com/yassin-berriai) in [#&#8203;43376](https://github.com/BerriAI/litellm/pull/43376)
- fix(cost-map): add web search flag and model page source to anthropic claude-sonnet-5-5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43584](https://github.com/BerriAI/litellm/pull/43584)
- refactor(mcp): consolidate hub publication predicate by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43394](https://github.com/BerriAI/litellm/pull/43394)
- fix(provider): accept 2xx status codes in unified_access_group create by [@&#8203;Louis-Vauterin](https://github.com/Louis-Vauterin) in [#&#8203;42461](https://github.com/BerriAI/litellm/pull/42461)
- fix(panw_prisma_airs): honor experimental_use_latest_role_message_only on every request shape by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42447](https://github.com/BerriAI/litellm/pull/42447)
- fix(cost-map): add Vertex batch cache prices to vertex_ai/claude-sonnet-5-5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43602](https://github.com/BerriAI/litellm/pull/43602)
- revert: "feat(usage): search team keys beyond the top-N in the Team usage view ([#&#8203;42857](https://github.com/BerriAI/litellm/issues/42857))" by [@&#8203;yassin-berriai](https://github.com/yassin-berriai) in [#&#8203;43377](https://github.com/BerriAI/litellm/pull/43377)
- feat(providers): add Prism provider (internal copy of [#&#8203;40914](https://github.com/BerriAI/litellm/issues/40914)) by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;41961](https://github.com/BerriAI/litellm/pull/41961)
- test(integration): credential canary suite harness by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43300](https://github.com/BerriAI/litellm/pull/43300)
- feat(bedrock): add xai grok-4.7 pricing and sync llama, mistral large 2407 and minimax m2.5 prices by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43623](https://github.com/BerriAI/litellm/pull/43623)
- ci: sync the weekly release cycle with Linear releases by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43636](https://github.com/BerriAI/litellm/pull/43636)
- feat(cache): select Rust caching through explicit cache objects by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43601](https://github.com/BerriAI/litellm/pull/43601)
- test(integration): credential canary slots for MCP and pass-through credentials by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43308](https://github.com/BerriAI/litellm/pull/43308)
- test(integration): stored-config credential canary slots by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43309](https://github.com/BerriAI/litellm/pull/43309)
- fix(guardrails): preserve Presidio output selection and restoration by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43401](https://github.com/BerriAI/litellm/pull/43401)
- fix(ui): rename All Models tab to Deployed Models and model filters to All Proxy Models by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43638](https://github.com/BerriAI/litellm/pull/43638)
- feat(mcp): scan and pin upstream tool descriptions by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43283](https://github.com/BerriAI/litellm/pull/43283)
- feat(cost-map): add bedrock_mantle rows for claude opus 5.5 and sonnet 5.5 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43647](https://github.com/BerriAI/litellm/pull/43647)
- chore(codeowners): drop UI, migration, and CODEOWNERS self owners by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43653](https://github.com/BerriAI/litellm/pull/43653)
- feat(fireworks_ai): route and list the auto, auto-instant and firerouter routers by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43641](https://github.com/BerriAI/litellm/pull/43641)
- feat: add model leaderboard page by [@&#8203;ishaan-berri](https://github.com/ishaan-berri) in [#&#8203;43649](https://github.com/BerriAI/litellm/pull/43649)
- fix(google_genai): preserve proxy_server_request in completion adapter by [@&#8203;hsm207](https://github.com/hsm207) in [#&#8203;43536](https://github.com/BerriAI/litellm/pull/43536)
- fix(otel): send cache and reasoning tokens in langfuse usage_details by [@&#8203;ankit373](https://github.com/ankit373) in [#&#8203;43553](https://github.com/BerriAI/litellm/pull/43553)
- fix(vertex_ai): forward the per-turn-control beta for per-message output_config by [@&#8203;DeviaVir](https://github.com/DeviaVir) in [#&#8203;43558](https://github.com/BerriAI/litellm/pull/43558)
- fix(cost-map): add tool calling and reasoning flags, correct max output for nebius DeepSeek-V4.1-Flash by [@&#8203;Flexomatic81](https://github.com/Flexomatic81) in [#&#8203;43588](https://github.com/BerriAI/litellm/pull/43588)
- fix(proxy): resolve model_group_alias in the zero-cost budget predicate by [@&#8203;fedaeho](https://github.com/fedaeho) in [#&#8203;43512](https://github.com/BerriAI/litellm/pull/43512)
- refactor: clean up fresh tech debt from 2026-09-28 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43674](https://github.com/BerriAI/litellm/pull/43674)
- refactor(types): replace Any with proven types in 7 files by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43704](https://github.com/BerriAI/litellm/pull/43704)
- docs(security): point readers to the security announcements mailing list signup by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43713](https://github.com/BerriAI/litellm/pull/43713)
- refactor(rust): add shared llms wire type derives by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43730](https://github.com/BerriAI/litellm/pull/43730)
- fix(router): stream /v1/messages lifecycle frames live when no fallback can take over by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43600](https://github.com/BerriAI/litellm/pull/43600)
- feat(cost-map): add baseten DeepSeek-V4.1-Flash-Fast by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43735](https://github.com/BerriAI/litellm/pull/43735)
- feat(guardrails): send a configured gateway_name from noma_v2 to Noma by [@&#8203;itaimodi](https://github.com/itaimodi) in [#&#8203;43678](https://github.com/BerriAI/litellm/pull/43678)
- chore(cost-map): add openai gpt-6.1-sol from the pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43738](https://github.com/BerriAI/litellm/pull/43738)
- test(integration): callback credential canary slots C1-C3 and D5 by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43630](https://github.com/BerriAI/litellm/pull/43630)
- test(integration): request-path credential canary slots D1-D4 by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43307](https://github.com/BerriAI/litellm/pull/43307)
- test(integration): sweep proxy logs, metrics, a Datadog intake and the Logs drawer for credential canaries by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43306](https://github.com/BerriAI/litellm/pull/43306)
- chore(cost-map): add azure and openrouter gpt-6.1-sol rows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43744](https://github.com/BerriAI/litellm/pull/43744)
- test(proxy): classify every credential-bearing param for the canary suite by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43298](https://github.com/BerriAI/litellm/pull/43298)
- fix(cost-map): lower fireworks up-to-4b size tier to the pricing page price by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43740](https://github.com/BerriAI/litellm/pull/43740)
- fix(cost_calculator): bill chat per-second pricing once with a new cost_per_second field by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43614](https://github.com/BerriAI/litellm/pull/43614)
- chore(cost-map): add openai gpt-6-astra ultrafast tier prices from the pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43745](https://github.com/BerriAI/litellm/pull/43745)
- fix(autorouter): compare historical and new savings consistently by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43348](https://github.com/BerriAI/litellm/pull/43348)
- fix(model-prices): align Azure, Bedrock, Copilot, Gemini, Groq, OpenAI and OpenRouter entries with official docs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43598](https://github.com/BerriAI/litellm/pull/43598)
- fix(guardrails): enable explicit PANW MCP output scanning by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43109](https://github.com/BerriAI/litellm/pull/43109)
- refactor(rust): orchestrate Messages route execution by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43719](https://github.com/BerriAI/litellm/pull/43719)
- fix(streaming): keep the served service_tier on streamed chunks and spend rows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42870](https://github.com/BerriAI/litellm/pull/42870)
- feat(bedrock): add openai gpt-6.1-sol global and base rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43758](https://github.com/BerriAI/litellm/pull/43758)
- perf(router): fetch cooldown state and usage counters in one Redis round trip by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43320](https://github.com/BerriAI/litellm/pull/43320)
- perf(proxy): hold one spend counter batch across admission and across post-call accounting by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43369](https://github.com/BerriAI/litellm/pull/43369)
- perf(responses): run aresponses through the async wrapper so the cache is read once by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43769](https://github.com/BerriAI/litellm/pull/43769)
- fix(router): bind Claude Code background sessions to their auto-router by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43767](https://github.com/BerriAI/litellm/pull/43767)
- feat(bedrock): add openai.gpt-6.1-sol us geo cris and Mantle rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43763](https://github.com/BerriAI/litellm/pull/43763)
- fix(proxy): recover session key owners from daily spend for usage attribution by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43642](https://github.com/BerriAI/litellm/pull/43642)
- chore(cost-map): take azure context limits from models-sold-directly by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43759](https://github.com/BerriAI/litellm/pull/43759)
- perf(proxy): one request-scoped Redis pipeline for auth, spend, rate-limit and routing reads by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43407](https://github.com/BerriAI/litellm/pull/43407)
- fix(mcp): scope OpenAPI listings to the exact server prefix and drop upstream OAuth metadata when a server is saved by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43608](https://github.com/BerriAI/litellm/pull/43608)
- perf(proxy): one post-call Redis pipeline per backend for spend, rate-limit, routing and response-cache writes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43779](https://github.com/BerriAI/litellm/pull/43779)
- fix(bedrock): set gpt-6.1-sol max output tokens to 131072 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43782](https://github.com/BerriAI/litellm/pull/43782)
- perf(proxy): refresh auth management objects through the request Redis pipeline by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43776](https://github.com/BerriAI/litellm/pull/43776)
- feat(agents): add identity storage and validation contracts by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43720](https://github.com/BerriAI/litellm/pull/43720)
- chore: bump litellm-enterprise 0.1.71 -> 0.1.72, litellm-proxy-extras 0.4.102 -> 0.4.103, litellm 1.104.0 -> 1.105.0 by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43789](https://github.com/BerriAI/litellm/pull/43789)
- fix(auth): give UI/CLI session tokens their own AES-GCM context and header-safe shape by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43790](https://github.com/BerriAI/litellm/pull/43790)
- chore(deps): bump pyjwt, moment and brace-expansion to clear osv-scan by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43792](https://github.com/BerriAI/litellm/pull/43792)
- fix(ui): surface x-litellm-call-id in Logs search, table and drawer by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42436](https://github.com/BerriAI/litellm/pull/42436)
- fix(proxy): look up hashed key names with two spend log rows per key by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43656](https://github.com/BerriAI/litellm/pull/43656)
- fix(cost-map): add deprecation_date to two together_ai nvidia rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43809](https://github.com/BerriAI/litellm/pull/43809)
- test(ci): refresh retired OpenAI tool-call models by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43676](https://github.com/BerriAI/litellm/pull/43676)
- fix(ui): keep MCP permissions visible after key, team and MCP server saves by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43810](https://github.com/BerriAI/litellm/pull/43810)
- test(ci): repair MCP Responses and budget fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43788](https://github.com/BerriAI/litellm/pull/43788)
- test(bedrock): accept regional aliases that inherit Converse routing by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43785](https://github.com/BerriAI/litellm/pull/43785)
- fix(params): categorize internal param appropriately to prevent leaking into request by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43783](https://github.com/BerriAI/litellm/pull/43783)
- perf(router): honour the cooldown read interval in the routing prefetch by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43815](https://github.com/BerriAI/litellm/pull/43815)
- fix(router): carry per-request routing reads on context variables instead of public method kwargs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43814](https://github.com/BerriAI/litellm/pull/43814)
- fix(bedrock): add beta header for output config in message by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43778](https://github.com/BerriAI/litellm/pull/43778)
- refactor: clean up fresh tech debt from 2026-09-29 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43830](https://github.com/BerriAI/litellm/pull/43830)
- test(router): settle the shared logging worker before recording shadow callbacks by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43847](https://github.com/BerriAI/litellm/pull/43847)
- chore(model_prices): add Gemini Veo, Mistral and Azure Claude 4.5 deprecation dates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43857](https://github.com/BerriAI/litellm/pull/43857)
- fix(cost_calculator): bill ultrafast prompts above 272k at the ultrafast long-context rates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43764](https://github.com/BerriAI/litellm/pull/43764)
- refactor(rust): centralize Python bridge execution wrappers by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43871](https://github.com/BerriAI/litellm/pull/43871)
- chore(cost-map): add openai gpt-image-2.5 batch prices from the pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43869](https://github.com/BerriAI/litellm/pull/43869)
- chore(cost-map): add fireworks priority prices for ember-1, nemotron and glm 5.3 us rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43811](https://github.com/BerriAI/litellm/pull/43811)
- fix(proxy): attribute completed batch cost rows to /batches in daily activity by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43870](https://github.com/BerriAI/litellm/pull/43870)
- fix(router): strip encrypted reasoning the pinned deployment cannot decrypt by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43781](https://github.com/BerriAI/litellm/pull/43781)
- fix(cost_calculator): stop copying optional_params into response hidden params by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43637](https://github.com/BerriAI/litellm/pull/43637)
- feat(pricing): add vertex_ai gemini-3.8 flash tts rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43876](https://github.com/BerriAI/litellm/pull/43876)
- fix(proxy): keep request-body credentials out of stored spend-log requests by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43635](https://github.com/BerriAI/litellm/pull/43635)
- fix(ui): right-align money and count columns across tables by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;37889](https://github.com/BerriAI/litellm/pull/37889)
- feat(agents): enforce authoritative agent permissions by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43721](https://github.com/BerriAI/litellm/pull/43721)
- fix(proxy): strip caller credentials from websocket passthrough by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43855](https://github.com/BerriAI/litellm/pull/43855)
- fix(ui): render access group MCP and agent selections as wrapping chips by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;41228](https://github.com/BerriAI/litellm/pull/41228)
- fix(responses): scan and mask top-level instructions with guardrails by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43629](https://github.com/BerriAI/litellm/pull/43629)
- feat(traces): add Rust storage foundation by [@&#8203;yujonglee-berri](https://github.com/yujonglee-berri) in [#&#8203;43819](https://github.com/BerriAI/litellm/pull/43819)
- feat(ui): agent traces tab on logs with timeline and otel setup guide by [@&#8203;ishaan-berri](https://github.com/ishaan-berri) in [#&#8203;43891](https://github.com/BerriAI/litellm/pull/43891)
- feat(otel v2): excluded_services opt-out for datastore spans on tenant destinations by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43278](https://github.com/BerriAI/litellm/pull/43278)
- fix(traces): correct ClickHouse rollup partitioning, dedupe keys, and retention changes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43901](https://github.com/BerriAI/litellm/pull/43901)
- fix(bedrock): keep applicable beta headers by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43829](https://github.com/BerriAI/litellm/pull/43829)
- feat(agents): authenticate Entra identities and delegated requests by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43722](https://github.com/BerriAI/litellm/pull/43722)
- fix(hosted_vllm): keep reasoning_content on replayed assistant messages by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43599](https://github.com/BerriAI/litellm/pull/43599)
- fix(proxy): delete large teams without per-member transaction fan-out by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42998](https://github.com/BerriAI/litellm/pull/42998)
- feat(tracing): port OTLP ingestion to current trace foundation by [@&#8203;yujonglee-berri](https://github.com/yujonglee-berri) in [#&#8203;43915](https://github.com/BerriAI/litellm/pull/43915)
- feat(proxy): add native ROI calculator for gateway spend vs merged PRs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43669](https://github.com/BerriAI/litellm/pull/43669)
- test(e2e): repair completion, SAIL, and spend-log fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43902](https://github.com/BerriAI/litellm/pull/43902)
- test(s3_v2): pin async 5xx retry through the production AsyncHTTPHandler by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43080](https://github.com/BerriAI/litellm/pull/43080)
- feat(ui): adopt the new LiteLLM logo and monogram by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43913](https://github.com/BerriAI/litellm/pull/43913)
- fix(proxy): relay Azure passthrough body model groups through the router by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43896](https://github.com/BerriAI/litellm/pull/43896)
- fix(proxy): register a UI-configured arize callback next to otel under OTel v2 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43906](https://github.com/BerriAI/litellm/pull/43906)
- fix(transcription): honor base_url alias for Groq Whisper and report it as the api base by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43917](https://github.com/BerriAI/litellm/pull/43917)
- feat(tracing): store spend in ClickHouse automatically by [@&#8203;yujonglee-berri](https://github.com/yujonglee-berri) in [#&#8203;43928](https://github.com/BerriAI/litellm/pull/43928)
- fix(packaging): keep wheel paths under Windows MAX_PATH for Store Python by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43903](https://github.com/BerriAI/litellm/pull/43903)
- feat(agents): add identity registration and dashboard controls by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43723](https://github.com/BerriAI/litellm/pull/43723)
- refactor(proxy): answer every team access check with TeamAccess.allows by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43364](https://github.com/BerriAI/litellm/pull/43364)
- test(bedrock): restore the AWS env after a failed live call in the auth tests by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43921](https://github.com/BerriAI/litellm/pull/43921)
- feat(lens): analyze agent activity with a separate worker by [@&#8203;moe-berri](https://github.com/moe-berri) in [#&#8203;43889](https://github.com/BerriAI/litellm/pull/43889)
- fix(router): bill service tiers at catalog rates for custom-priced deployments by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43890](https://github.com/BerriAI/litellm/pull/43890)
- test(ci): refresh qualified retired OpenAI fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43938](https://github.com/BerriAI/litellm/pull/43938)
- fix(anthropic): forward the dangerous-tool-use beta to Azure AI Foundry by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43934](https://github.com/BerriAI/litellm/pull/43934)
- test(proxy): scope user_api_key_auth overrides in proxy_server tests by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43952](https://github.com/BerriAI/litellm/pull/43952)
- fix(wandb): set supports_vision true on GLM-5.3-Flash by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43951](https://github.com/BerriAI/litellm/pull/43951)
- chore(cost-map): sync openrouter prices from the models API by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43950](https://github.com/BerriAI/litellm/pull/43950)
- fix(grayswan): send request conversation and tool calls to post-call monitor by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43770](https://github.com/BerriAI/litellm/pull/43770)
- fix(azure_storage): name Data Lake objects without base64 padding or slashes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43914](https://github.com/BerriAI/litellm/pull/43914)
- fix(guardrails): treat an unknown straiker api_version as unset instead of skipping the guardrail by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43956](https://github.com/BerriAI/litellm/pull/43956)
- chore(deps): bump gitpython and tornado, extend diskcache osv ignore to Nov 1 by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43961](https://github.com/BerriAI/litellm/pull/43961)
- fix(azure_storage): keep the DataLakeServiceClient alive until its TTL elapses by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43082](https://github.com/BerriAI/litellm/pull/43082)
- feat(proxy): record in spend logs whether a request used a client-forwarded Anthropic OAuth token by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43063](https://github.com/BerriAI/litellm/pull/43063)
- test(ci): repair stale tests and move retired OpenAI text-completion fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43958](https://github.com/BerriAI/litellm/pull/43958)
- feat(e2e): record each e2e test's steps, starting with ProxyClient by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;42393](https://github.com/BerriAI/litellm/pull/42393)
- feat(providers): add Cortecs as an OpenAI-compatible provider by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43872](https://github.com/BerriAI/litellm/pull/43872)
- feat(ui): filter tags by name and description on the Tag Management page by [@&#8203;galovics](https://github.com/galovics) in [#&#8203;42949](https://github.com/BerriAI/litellm/pull/42949)
- fix(caching): write the response-cache SET to Redis at once instead of on the post-call batch by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43973](https://github.com/BerriAI/litellm/pull/43973)
- test(e2e): typed per-test metadata for the e2e suite by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;42044](https://github.com/BerriAI/litellm/pull/42044)
- feat(guardrails): honor litellm_params.timeout in every HTTP guardrail by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43134](https://github.com/BerriAI/litellm/pull/43134)
- chore(cost-map): add fireworks inkling priority prices from the prices api by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43949](https://github.com/BerriAI/litellm/pull/43949)
- chore(cost-map): add deprecation date for anthropic claude-sonnet-4-5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43898](https://github.com/BerriAI/litellm/pull/43898)
- fix(cost-map): raise baseten DeepSeek-V4.1-Flash max output to 262144 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43916](https://github.com/BerriAI/litellm/pull/43916)
- fix(proxy): restore pre-config-wins handling of pass-through endpoints by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43962](https://github.com/BerriAI/litellm/pull/43962)
- feat(lens): investigate sampled traces and retain batch results by [@&#8203;moe-berri](https://github.com/moe-berri) in [#&#8203;43942](https://github.com/BerriAI/litellm/pull/43942)
- fix(guardrails): scan Responses API input in Azure Prompt Shield by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43786](https://github.com/BerriAI/litellm/pull/43786)
- fix(guardrails): scan Responses API input in Azure Text Moderation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43965](https://github.com/BerriAI/litellm/pull/43965)
- refactor: clean up fresh tech debt from 2026-09-30 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43993](https://github.com/BerriAI/litellm/pull/43993)
- test: inject the H…
rogerrum pushed a commit to rogerrum/k8s-gitops that referenced this pull request Oct 15, 2026
….105.0 ) (#3632)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/berriai/litellm](https://images.chainguard.dev/directory/image/wolfi-base/overview) ([source](https://github.com/BerriAI/litellm)) | minor | `v1.104.2` → `v1.105.0` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/3566) for more information.

---

### Release Notes

<details>
<summary>BerriAI/litellm (ghcr.io/berriai/litellm)</summary>

### [`v1.105.0`](https://github.com/BerriAI/litellm/releases/tag/v1.105.0)

[Compare Source](https://github.com/BerriAI/litellm/compare/v1.104.3...v1.105.0)

#### Verify Docker Image Signature

All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). Every release is signed with the same key introduced in [commit `0112e53`](https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0).

**Verify using the pinned commit hash (recommended):**

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

```bash
cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.105.0
```

**Verify using the release tag (convenience):**

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

```bash
cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.105.0/cosign.pub \
  ghcr.io/berriai/litellm:v1.105.0
```

Expected output:

```
The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key
```

***

#### What's Changed

- feat(mcp): share compatibility-aware result conversion across tool surfaces by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43089](https://github.com/BerriAI/litellm/pull/43089)
- fix(caching): propagate auth cache invalidation over Redis Cluster via a node-level pub/sub client by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43110](https://github.com/BerriAI/litellm/pull/43110)
- feat(model-catalog): add Rust registry validation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43136](https://github.com/BerriAI/litellm/pull/43136)
- test(rust): reorganize core crate tests and split cache and OCR suites by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43177](https://github.com/BerriAI/litellm/pull/43177)
- fix(proxy): give SpendLogToolIndex its own share of the cleanup budget and log a per-run summary by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;41768](https://github.com/BerriAI/litellm/pull/41768)
- feat(rust): hand upstream response headers to the native Messages stream by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43178](https://github.com/BerriAI/litellm/pull/43178)
- feat(testkit): agent clients for Claude Code, Codex and opencode by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43181](https://github.com/BerriAI/litellm/pull/43181)
- ci: run migrated unit selections on every event in legacy GHA shards by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43182](https://github.com/BerriAI/litellm/pull/43182)
- test: move tests/test_litellm root and small trees into tests/unit by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43186](https://github.com/BerriAI/litellm/pull/43186)
- fix(sso): gate /sso/debug routes behind ENABLE_SSO_DEBUG, off by default by [@&#8203;ojensen-berri](https://github.com/ojensen-berri) in [#&#8203;43150](https://github.com/BerriAI/litellm/pull/43150)
- refactor(framer): replace Framer trait with tokio-util codecs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43193](https://github.com/BerriAI/litellm/pull/43193)
- fix(anthropic): surface Responses bridge stream failures as Anthropic error events by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43126](https://github.com/BerriAI/litellm/pull/43126)
- test: move tests/test_litellm/llms into tests/unit/llms by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43191](https://github.com/BerriAI/litellm/pull/43191)
- test: move tests/test_litellm integrations and secret_managers into tests/unit by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43194](https://github.com/BerriAI/litellm/pull/43194)
- feat(mcp): configure protocol versions and capability discovery by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43169](https://github.com/BerriAI/litellm/pull/43169)
- fix(proxy): record streamed /v1/responses container ownership before the response.completed frame by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43140](https://github.com/BerriAI/litellm/pull/43140)
- fix(tests): drop the repeated UNIT_FLAG key in test_unit_shard_missing_paths by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43212](https://github.com/BerriAI/litellm/pull/43212)
- fix(router): count provider budget spend on every API surface by [@&#8203;daqiangganjun](https://github.com/daqiangganjun) in [#&#8203;38172](https://github.com/BerriAI/litellm/pull/38172)
- fix(responses): fall back on pre-output stream drops, fail truncated streams, honor request_timeout by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43133](https://github.com/BerriAI/litellm/pull/43133)
- fix(sentry): scrub PII and secrets inside object reprs and nested locals, add SENTRY_SEND_DEFAULT_PII opt-in by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43123](https://github.com/BerriAI/litellm/pull/43123)
- fix(bedrock): surface a converse-stream 200 that decodes to no events as a 502 instead of an empty turn by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43213](https://github.com/BerriAI/litellm/pull/43213)
- fix(jwt): let x-litellm-team-id select DB membership teams when the token also carries a team claim by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43206](https://github.com/BerriAI/litellm/pull/43206)
- feat(integrations): add Databricks Zerobus trace logging callback by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42013](https://github.com/BerriAI/litellm/pull/42013)
- fix(vertex_ai): keep legacy bucket_name in credential resolution and add GCS_BATCH_BUCKET_NAME env var by [@&#8203;mubashir1osmani](https://github.com/mubashir1osmani) in [#&#8203;42803](https://github.com/BerriAI/litellm/pull/42803)
- feat(xai): add native xAI batches and files support by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42812](https://github.com/BerriAI/litellm/pull/42812)
- fix(proxy): send a real error event when a /v1/messages stream fails by [@&#8203;4refael](https://github.com/4refael) in [#&#8203;41826](https://github.com/BerriAI/litellm/pull/41826)
- fix(logging): redact raw_request when turn_off_message_logging is set in the proxy config by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43219](https://github.com/BerriAI/litellm/pull/43219)
- fix(router): parse the classifier verdict out of surrounding prose instead of falling to the default tier by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43215](https://github.com/BerriAI/litellm/pull/43215)
- test(zerobus): move tests into active CI selection by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43235](https://github.com/BerriAI/litellm/pull/43235)
- fix(proxy): keep the submitted body out of 422 validation errors by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43231](https://github.com/BerriAI/litellm/pull/43231)
- test: move tests/test_litellm core utils, routing, responses, caching and rust_bridge into tests/unit by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43199](https://github.com/BerriAI/litellm/pull/43199)
- chore(cost-map): add fireworks us-only deepseek v4.1 flash priority prices by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43247](https://github.com/BerriAI/litellm/pull/43247)
- chore(cost-map): sync openrouter prices and add perceptron-mk1.5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43246](https://github.com/BerriAI/litellm/pull/43246)
- fix(cost-map): correct fireworks_ai deepseek-v4p1-flash pricing by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43253](https://github.com/BerriAI/litellm/pull/43253)
- feat(openrouter): add typesafe/jev-router to the cost map by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43248](https://github.com/BerriAI/litellm/pull/43248)
- chore(cost-map): add fireworks priority prices for muse glimmer 30b and deepseek v4 flash vision exp by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43252](https://github.com/BerriAI/litellm/pull/43252)
- refactor(rust): move credential inheritance and SDK limits into a driver preflight by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43259](https://github.com/BerriAI/litellm/pull/43259)
- fix(router): hold Responses lifecycle events until output so a pre-output fallback announces one response by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43238](https://github.com/BerriAI/litellm/pull/43238)
- refactor(http): hand out an owned Client and route all providers through the pool by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43245](https://github.com/BerriAI/litellm/pull/43245)
- test: fix stale and state-leaking tests red on scheduled CircleCI by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43266](https://github.com/BerriAI/litellm/pull/43266)
- fix(cost-map): retirement dates, chatgpt reasoning flags, bing pricing, bedrock mantle and mythos, azure gpt-5.6 alias, anthropic batch rates, new nebius, openrouter and xai rows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42951](https://github.com/BerriAI/litellm/pull/42951)
- refactor(rust): promote anthropic messages out of experimental_pass_through by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43269](https://github.com/BerriAI/litellm/pull/43269)
- test: stop CI tests from downloading tokenizer files and images by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43257](https://github.com/BerriAI/litellm/pull/43257)
- fix(rust): preserve nested optional import failures by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43265](https://github.com/BerriAI/litellm/pull/43265)
- ci: drop main and litellm\_\* branch filters from the CircleCI litellm-main workflows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43272](https://github.com/BerriAI/litellm/pull/43272)
- feat(proxy): email alerts at configured percentages of a team member budget by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42665](https://github.com/BerriAI/litellm/pull/42665)
- fix(callbacks-legacy-python): traverse and release the retained headers dict by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43274](https://github.com/BerriAI/litellm/pull/43274)
- test(integration): port langfuse callbacks-in-db coverage to the local harness by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43282](https://github.com/BerriAI/litellm/pull/43282)
- test(e2e): accept the otel cost write as a linked root trace by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42931](https://github.com/BerriAI/litellm/pull/42931)
- test: finish the non-proxy half of tests/test_litellm by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43281](https://github.com/BerriAI/litellm/pull/43281)
- refactor(rust): prepare inference and auth foundations for the gateway by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43287](https://github.com/BerriAI/litellm/pull/43287)
- feat(rust): add config, router and gateway crates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43289](https://github.com/BerriAI/litellm/pull/43289)
- fix(cost-map): remove duplicate openrouter/perceptron/perceptron-mk1.5 entry by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43273](https://github.com/BerriAI/litellm/pull/43273)
- fix(e2e): resolve the blank-S3 gateway repo root from the litellm package location by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42911](https://github.com/BerriAI/litellm/pull/42911)
- test(integration): run the Langfuse DB-callback test on its own scratch database by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43288](https://github.com/BerriAI/litellm/pull/43288)
- refactor(rust): expand logging and test coverage across gateway and Anthropic messages by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43295](https://github.com/BerriAI/litellm/pull/43295)
- refactor: daily fresh tech debt cleanup, rolling PR (2026-09-25) by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43151](https://github.com/BerriAI/litellm/pull/43151)
- test(proxy_behavior): scope the management proxy fixture to its package so its spend monitor cannot race the spend tests by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43302](https://github.com/BerriAI/litellm/pull/43302)
- fix(cost-map): registry audit 2026-09-26, MAI-Image-2.5-Flash price, Databricks Claude Opus 5.5, Azure Foundry retirement dates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43254](https://github.com/BerriAI/litellm/pull/43254)
- fix(cost-map): price fireworks deepseek v4.1 flash at the prices api value by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43311](https://github.com/BerriAI/litellm/pull/43311)
- fix(ci): stop stale CI reds, keep unit tests off the host env, retry CyberArk policy conflicts by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43294](https://github.com/BerriAI/litellm/pull/43294)
- fix(otel): detach post-response service spans by request phase, name redis spans by operation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43237](https://github.com/BerriAI/litellm/pull/43237)
- test(e2e): assert only litellm-owned batch behavior and move the blank S3 env pin to an integration test by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43321](https://github.com/BerriAI/litellm/pull/43321)
- test(integration): pin the team-admin status-code matrix across every management route by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43249](https://github.com/BerriAI/litellm/pull/43249)
- feat(proxy): add fail_closed_rate_limit_enforcement to reject requests with 503 while Redis rate limit counters are unreachable by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43251](https://github.com/BerriAI/litellm/pull/43251)
- fix(responses): run stream failure and success hooks on the iterating loop instead of blocking it by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43270](https://github.com/BerriAI/litellm/pull/43270)
- fix(guardrails): block private destinations in custom code http_request and bound guardrail execution time by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43280](https://github.com/BerriAI/litellm/pull/43280)
- feat(sail): add Sail as a provider with service_tier mapped to its completion window by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42840](https://github.com/BerriAI/litellm/pull/42840)
- test(mcp): pin server resolution and authorization behavior by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43261](https://github.com/BerriAI/litellm/pull/43261)
- refactor(anthropic): rename experimental_pass_through to pass_through by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43329](https://github.com/BerriAI/litellm/pull/43329)
- refactor(mcp): add shared server resolver without changing callers by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43262](https://github.com/BerriAI/litellm/pull/43262)
- ci: fail on new unbounded SQL IN lists and add a Prisma chunking helper by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;42629](https://github.com/BerriAI/litellm/pull/42629)
- test(logging): drain the logging worker after each logging callback test so no later test inherits its events by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43344](https://github.com/BerriAI/litellm/pull/43344)
- feat(guardrails): scan retrieved vector store chunks with the request's pre-call guardrails by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43271](https://github.com/BerriAI/litellm/pull/43271)
- fix(mcp): adopt shared server resolution and caller authorization by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43263](https://github.com/BerriAI/litellm/pull/43263)
- fix(s3_v2): upload fresh events first, drop terminal failures and hour-old retries by default, opt-in adaptive concurrency by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43022](https://github.com/BerriAI/litellm/pull/43022)
- feat(proxy): add maximum_daily_tag_spend_retention_period cleanup setting by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;39221](https://github.com/BerriAI/litellm/pull/39221)
- fix(cost-map): sync OpenRouter, Together, Cohere and Azure AI registry values with official sources by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43337](https://github.com/BerriAI/litellm/pull/43337)
- docs(pr-template): add the backport-stable label only for a P0 regression by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43351](https://github.com/BerriAI/litellm/pull/43351)
- fix(params): keep *litellm*\* kwargs out of provider request bodies by construction by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43221](https://github.com/BerriAI/litellm/pull/43221)
- test: remove substring guard test_default_api_base by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43355](https://github.com/BerriAI/litellm/pull/43355)
- ci: cut CircleCI wall time without loosening test isolation by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43347](https://github.com/BerriAI/litellm/pull/43347)
- fix(cost-map): correct azure gpt-4o-mini tts, transcribe, alias and MAI-Image-2.5 prices by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43357](https://github.com/BerriAI/litellm/pull/43357)
- fix(tests): stop VCR recording and replaying a test's own localhost upstream by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43346](https://github.com/BerriAI/litellm/pull/43346)
- test(integration): group /v1/messages contracts under tests/integration/messages_endpoint by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43352](https://github.com/BerriAI/litellm/pull/43352)
- fix(params): validate stream_chunk_size once, before any provider call by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43222](https://github.com/BerriAI/litellm/pull/43222)
- fix(openai): exclude fine-tuned and custom gpt-5-chat aliases from gpt-5 reasoning path by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43185](https://github.com/BerriAI/litellm/pull/43185)
- fix(langtrace): deliver spans to app.langtrace.ai/api/trace with x-api-key by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43322](https://github.com/BerriAI/litellm/pull/43322)
- fix(caching): stand default cache points down when extra_body hides a direct client mark by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43341](https://github.com/BerriAI/litellm/pull/43341)
- fix(mcp): report reachability without stored credentials by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43240](https://github.com/BerriAI/litellm/pull/43240)
- fix(mcp): align hub publication status and controls by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43241](https://github.com/BerriAI/litellm/pull/43241)
- chore(cost-map): sync openrouter prices for deepseek, minimax, qwen and glm rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43384](https://github.com/BerriAI/litellm/pull/43384)
- chore(cost-map): drop stale cache hit field from openrouter deepseek-v4-pro-0813 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43389](https://github.com/BerriAI/litellm/pull/43389)
- fix(responses): stream guardrail pre-call block as SSE with a typed output item by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42507](https://github.com/BerriAI/litellm/pull/42507)
- feat(e2e): read management routes back from the control plane replicas by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43373](https://github.com/BerriAI/litellm/pull/43373)
- feat(rust): add the openai_like chat config foundation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43379](https://github.com/BerriAI/litellm/pull/43379)
- feat(router): opt in to prompt-cache cost routing by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43232](https://github.com/BerriAI/litellm/pull/43232)
- feat(otel): add SigNoz preset for OpenTelemetry v2 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43296](https://github.com/BerriAI/litellm/pull/43296)
- feat(cli): reuse saved agent setup and add reconfigure by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43392](https://github.com/BerriAI/litellm/pull/43392)
- fix(streaming): keep litellm Usage on text-completion usage chunks by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43047](https://github.com/BerriAI/litellm/pull/43047)
- fix(vertex_ai): consider tools when validating context caching min tokens by [@&#8203;agustin18](https://github.com/agustin18) in [#&#8203;43319](https://github.com/BerriAI/litellm/pull/43319)
- fix(anthropic): drop thinking blocks with empty thinking text, not just missing signature by [@&#8203;shoemoney](https://github.com/shoemoney) in [#&#8203;38049](https://github.com/BerriAI/litellm/pull/38049)
- test(e2e): report batch cleanup leftovers as a plain UserWarning by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43405](https://github.com/BerriAI/litellm/pull/43405)
- fix(tools): salvage concatenated JSON tool call arguments by [@&#8203;kumarpriyanshu09](https://github.com/kumarpriyanshu09) in [#&#8203;43260](https://github.com/BerriAI/litellm/pull/43260)
- fix(gemini): forward seed to the Gemini API instead of rejecting it by [@&#8203;YaseenBashaT](https://github.com/YaseenBashaT) in [#&#8203;43197](https://github.com/BerriAI/litellm/pull/43197)
- fix(vertex_ai): make Gemma fake streams work with traced Responses by [@&#8203;stewartpark](https://github.com/stewartpark) in [#&#8203;43147](https://github.com/BerriAI/litellm/pull/43147)
- fix(responses): emit the reasoning item on streaming /v1/responses for signature-only thinking by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43414](https://github.com/BerriAI/litellm/pull/43414)
- fix(anthropic): forward the per-turn-control beta to Azure AI Foundry by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43415](https://github.com/BerriAI/litellm/pull/43415)
- test(vertex_ai): assert the usage the Gemma responses stream actually reports by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43422](https://github.com/BerriAI/litellm/pull/43422)
- fix(bedrock): keep the provider status code on unprocessable image errors by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43416](https://github.com/BerriAI/litellm/pull/43416)
- fix(vertex_ai): stop importing the vertexai SDK in partner-model completion by [@&#8203;anmolg1997](https://github.com/anmolg1997) in [#&#8203;42274](https://github.com/BerriAI/litellm/pull/42274)
- fix(token_counter): count Gemini function_declarations tools by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43417](https://github.com/BerriAI/litellm/pull/43417)
- refactor(types): replace Any with proven types in 5 files by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43304](https://github.com/BerriAI/litellm/pull/43304)
- chore(cost-map): update azure_ai/grok-4.6 input price from Azure pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43440](https://github.com/BerriAI/litellm/pull/43440)
- chore(cost-map): add azure_ai/MAI-Cyber-1-Flash by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43446](https://github.com/BerriAI/litellm/pull/43446)
- refactor(rust): share anthropic types, request helpers, and streaming contracts across crates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43426](https://github.com/BerriAI/litellm/pull/43426)
- feat(rust): expand gateway configuration parsing by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43460](https://github.com/BerriAI/litellm/pull/43460)
- refactor(rust): share call lifecycle across route-owned inference by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43461](https://github.com/BerriAI/litellm/pull/43461)
- feat(rust): add the HTTP host driver by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43462](https://github.com/BerriAI/litellm/pull/43462)
- build(rust): package the gateway container by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43471](https://github.com/BerriAI/litellm/pull/43471)
- refactor(rust): use shared execution in gateway inference by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43463](https://github.com/BerriAI/litellm/pull/43463)
- fix(cost-map): add deprecation_date to together_ai Salesforce/Llama-Rank-V1 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43507](https://github.com/BerriAI/litellm/pull/43507)
- feat(rust): support the HTTP Responses API by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43464](https://github.com/BerriAI/litellm/pull/43464)
- fix(cost-map): sync openrouter prices from the models API by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43506](https://github.com/BerriAI/litellm/pull/43506)
- fix(cost-map): set together_ai gpt-oss-20b and gemma-4-31B-it deprecation_date to 2026-09-15 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43509](https://github.com/BerriAI/litellm/pull/43509)
- feat(rust): add litellm-db and litellm-db-testing workspace scaffolding by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43504](https://github.com/BerriAI/litellm/pull/43504)
- feat(rust): connect Python inference bindings to shared routes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43465](https://github.com/BerriAI/litellm/pull/43465)
- feat(rust): add structured route lifecycle tracing by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43466](https://github.com/BerriAI/litellm/pull/43466)
- feat(rust): separate gateway authentication and authorization by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43467](https://github.com/BerriAI/litellm/pull/43467)
- feat(rust): add virtual key storage contracts by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43468](https://github.com/BerriAI/litellm/pull/43468)
- feat(rust): add gateway UI login and sessions by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43469](https://github.com/BerriAI/litellm/pull/43469)
- feat(rust): add the MCP gateway by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43470](https://github.com/BerriAI/litellm/pull/43470)
- refactor(rust): remove delivery routing abstraction by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43514](https://github.com/BerriAI/litellm/pull/43514)
- feat(azure): add mistral ocr pricing and azure max output limits by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43530](https://github.com/BerriAI/litellm/pull/43530)
- refactor: clean up fresh tech debt from 2026-09-27 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43538](https://github.com/BerriAI/litellm/pull/43538)
- refactor(types): replace Any with proven types in 8 files by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43551](https://github.com/BerriAI/litellm/pull/43551)
- test(rust): enforce shared upstream error contract in wheel checks by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43520](https://github.com/BerriAI/litellm/pull/43520)
- fix(proxy): log key owner identity on expired key auth failures by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43105](https://github.com/BerriAI/litellm/pull/43105)
- fix(cost-map): registry audit 2026-09-28, openai deep-research shutdown dates, azure deepseek v4.1 flash direct price, vertex gemini 3.8 live avatar price, drop azure_ai/muse-spark-1.3 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43566](https://github.com/BerriAI/litellm/pull/43566)
- security(proxy): keep team callback credentials out of the stored request body by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43217](https://github.com/BerriAI/litellm/pull/43217)
- feat(model_prices): add claude-sonnet-5-5 model pricing by [@&#8203;krrish-berri-2](https://github.com/krrish-berri-2) in [#&#8203;43586](https://github.com/BerriAI/litellm/pull/43586)
- test(integration): pin org-admin status codes in the team-admin matrix by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43592](https://github.com/BerriAI/litellm/pull/43592)
- refactor(guardrails): fix agent 365 to the production endpoint and log the opt-in fail_open at error level by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43189](https://github.com/BerriAI/litellm/pull/43189)
- fix(model_prices): correct Claude Sonnet 5.5 capabilities and provider keys by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43587](https://github.com/BerriAI/litellm/pull/43587)
- test(unit): stop test modules from putting their own directory on sys.path by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43421](https://github.com/BerriAI/litellm/pull/43421)
- refactor(rust): centralize host execution and compose callbacks by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43515](https://github.com/BerriAI/litellm/pull/43515)
- fix(proxy): unregister logging callbacks removed from the stored config by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43428](https://github.com/BerriAI/litellm/pull/43428)
- chore(cost-map): take azure limits for deepseek-v4-flash-0731 and v3.2-speciale by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43597](https://github.com/BerriAI/litellm/pull/43597)
- revert: "feat(proxy): server-side Team Usage export beyond the top-N key cap ([#&#8203;42996](https://github.com/BerriAI/litellm/issues/42996))" by [@&#8203;yassin-berriai](https://github.com/yassin-berriai) in [#&#8203;43376](https://github.com/BerriAI/litellm/pull/43376)
- fix(cost-map): add web search flag and model page source to anthropic claude-sonnet-5-5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43584](https://github.com/BerriAI/litellm/pull/43584)
- refactor(mcp): consolidate hub publication predicate by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43394](https://github.com/BerriAI/litellm/pull/43394)
- fix(provider): accept 2xx status codes in unified_access_group create by [@&#8203;Louis-Vauterin](https://github.com/Louis-Vauterin) in [#&#8203;42461](https://github.com/BerriAI/litellm/pull/42461)
- fix(panw_prisma_airs): honor experimental_use_latest_role_message_only on every request shape by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42447](https://github.com/BerriAI/litellm/pull/42447)
- fix(cost-map): add Vertex batch cache prices to vertex_ai/claude-sonnet-5-5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43602](https://github.com/BerriAI/litellm/pull/43602)
- revert: "feat(usage): search team keys beyond the top-N in the Team usage view ([#&#8203;42857](https://github.com/BerriAI/litellm/issues/42857))" by [@&#8203;yassin-berriai](https://github.com/yassin-berriai) in [#&#8203;43377](https://github.com/BerriAI/litellm/pull/43377)
- feat(providers): add Prism provider (internal copy of [#&#8203;40914](https://github.com/BerriAI/litellm/issues/40914)) by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;41961](https://github.com/BerriAI/litellm/pull/41961)
- test(integration): credential canary suite harness by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43300](https://github.com/BerriAI/litellm/pull/43300)
- feat(bedrock): add xai grok-4.7 pricing and sync llama, mistral large 2407 and minimax m2.5 prices by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43623](https://github.com/BerriAI/litellm/pull/43623)
- ci: sync the weekly release cycle with Linear releases by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43636](https://github.com/BerriAI/litellm/pull/43636)
- feat(cache): select Rust caching through explicit cache objects by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43601](https://github.com/BerriAI/litellm/pull/43601)
- test(integration): credential canary slots for MCP and pass-through credentials by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43308](https://github.com/BerriAI/litellm/pull/43308)
- test(integration): stored-config credential canary slots by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43309](https://github.com/BerriAI/litellm/pull/43309)
- fix(guardrails): preserve Presidio output selection and restoration by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43401](https://github.com/BerriAI/litellm/pull/43401)
- fix(ui): rename All Models tab to Deployed Models and model filters to All Proxy Models by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43638](https://github.com/BerriAI/litellm/pull/43638)
- feat(mcp): scan and pin upstream tool descriptions by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43283](https://github.com/BerriAI/litellm/pull/43283)
- feat(cost-map): add bedrock_mantle rows for claude opus 5.5 and sonnet 5.5 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43647](https://github.com/BerriAI/litellm/pull/43647)
- chore(codeowners): drop UI, migration, and CODEOWNERS self owners by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43653](https://github.com/BerriAI/litellm/pull/43653)
- feat(fireworks_ai): route and list the auto, auto-instant and firerouter routers by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43641](https://github.com/BerriAI/litellm/pull/43641)
- feat: add model leaderboard page by [@&#8203;ishaan-berri](https://github.com/ishaan-berri) in [#&#8203;43649](https://github.com/BerriAI/litellm/pull/43649)
- fix(google_genai): preserve proxy_server_request in completion adapter by [@&#8203;hsm207](https://github.com/hsm207) in [#&#8203;43536](https://github.com/BerriAI/litellm/pull/43536)
- fix(otel): send cache and reasoning tokens in langfuse usage_details by [@&#8203;ankit373](https://github.com/ankit373) in [#&#8203;43553](https://github.com/BerriAI/litellm/pull/43553)
- fix(vertex_ai): forward the per-turn-control beta for per-message output_config by [@&#8203;DeviaVir](https://github.com/DeviaVir) in [#&#8203;43558](https://github.com/BerriAI/litellm/pull/43558)
- fix(cost-map): add tool calling and reasoning flags, correct max output for nebius DeepSeek-V4.1-Flash by [@&#8203;Flexomatic81](https://github.com/Flexomatic81) in [#&#8203;43588](https://github.com/BerriAI/litellm/pull/43588)
- fix(proxy): resolve model_group_alias in the zero-cost budget predicate by [@&#8203;fedaeho](https://github.com/fedaeho) in [#&#8203;43512](https://github.com/BerriAI/litellm/pull/43512)
- refactor: clean up fresh tech debt from 2026-09-28 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43674](https://github.com/BerriAI/litellm/pull/43674)
- refactor(types): replace Any with proven types in 7 files by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43704](https://github.com/BerriAI/litellm/pull/43704)
- docs(security): point readers to the security announcements mailing list signup by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43713](https://github.com/BerriAI/litellm/pull/43713)
- refactor(rust): add shared llms wire type derives by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43730](https://github.com/BerriAI/litellm/pull/43730)
- fix(router): stream /v1/messages lifecycle frames live when no fallback can take over by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43600](https://github.com/BerriAI/litellm/pull/43600)
- feat(cost-map): add baseten DeepSeek-V4.1-Flash-Fast by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43735](https://github.com/BerriAI/litellm/pull/43735)
- feat(guardrails): send a configured gateway_name from noma_v2 to Noma by [@&#8203;itaimodi](https://github.com/itaimodi) in [#&#8203;43678](https://github.com/BerriAI/litellm/pull/43678)
- chore(cost-map): add openai gpt-6.1-sol from the pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43738](https://github.com/BerriAI/litellm/pull/43738)
- test(integration): callback credential canary slots C1-C3 and D5 by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43630](https://github.com/BerriAI/litellm/pull/43630)
- test(integration): request-path credential canary slots D1-D4 by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43307](https://github.com/BerriAI/litellm/pull/43307)
- test(integration): sweep proxy logs, metrics, a Datadog intake and the Logs drawer for credential canaries by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43306](https://github.com/BerriAI/litellm/pull/43306)
- chore(cost-map): add azure and openrouter gpt-6.1-sol rows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43744](https://github.com/BerriAI/litellm/pull/43744)
- test(proxy): classify every credential-bearing param for the canary suite by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43298](https://github.com/BerriAI/litellm/pull/43298)
- fix(cost-map): lower fireworks up-to-4b size tier to the pricing page price by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43740](https://github.com/BerriAI/litellm/pull/43740)
- fix(cost_calculator): bill chat per-second pricing once with a new cost_per_second field by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43614](https://github.com/BerriAI/litellm/pull/43614)
- chore(cost-map): add openai gpt-6-astra ultrafast tier prices from the pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43745](https://github.com/BerriAI/litellm/pull/43745)
- fix(autorouter): compare historical and new savings consistently by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43348](https://github.com/BerriAI/litellm/pull/43348)
- fix(model-prices): align Azure, Bedrock, Copilot, Gemini, Groq, OpenAI and OpenRouter entries with official docs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43598](https://github.com/BerriAI/litellm/pull/43598)
- fix(guardrails): enable explicit PANW MCP output scanning by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43109](https://github.com/BerriAI/litellm/pull/43109)
- refactor(rust): orchestrate Messages route execution by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43719](https://github.com/BerriAI/litellm/pull/43719)
- fix(streaming): keep the served service_tier on streamed chunks and spend rows by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42870](https://github.com/BerriAI/litellm/pull/42870)
- feat(bedrock): add openai gpt-6.1-sol global and base rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43758](https://github.com/BerriAI/litellm/pull/43758)
- perf(router): fetch cooldown state and usage counters in one Redis round trip by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43320](https://github.com/BerriAI/litellm/pull/43320)
- perf(proxy): hold one spend counter batch across admission and across post-call accounting by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43369](https://github.com/BerriAI/litellm/pull/43369)
- perf(responses): run aresponses through the async wrapper so the cache is read once by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43769](https://github.com/BerriAI/litellm/pull/43769)
- fix(router): bind Claude Code background sessions to their auto-router by [@&#8203;tin-berri](https://github.com/tin-berri) in [#&#8203;43767](https://github.com/BerriAI/litellm/pull/43767)
- feat(bedrock): add openai.gpt-6.1-sol us geo cris and Mantle rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43763](https://github.com/BerriAI/litellm/pull/43763)
- fix(proxy): recover session key owners from daily spend for usage attribution by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43642](https://github.com/BerriAI/litellm/pull/43642)
- chore(cost-map): take azure context limits from models-sold-directly by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43759](https://github.com/BerriAI/litellm/pull/43759)
- perf(proxy): one request-scoped Redis pipeline for auth, spend, rate-limit and routing reads by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43407](https://github.com/BerriAI/litellm/pull/43407)
- fix(mcp): scope OpenAPI listings to the exact server prefix and drop upstream OAuth metadata when a server is saved by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43608](https://github.com/BerriAI/litellm/pull/43608)
- perf(proxy): one post-call Redis pipeline per backend for spend, rate-limit, routing and response-cache writes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43779](https://github.com/BerriAI/litellm/pull/43779)
- fix(bedrock): set gpt-6.1-sol max output tokens to 131072 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43782](https://github.com/BerriAI/litellm/pull/43782)
- perf(proxy): refresh auth management objects through the request Redis pipeline by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43776](https://github.com/BerriAI/litellm/pull/43776)
- feat(agents): add identity storage and validation contracts by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43720](https://github.com/BerriAI/litellm/pull/43720)
- chore: bump litellm-enterprise 0.1.71 -> 0.1.72, litellm-proxy-extras 0.4.102 -> 0.4.103, litellm 1.104.0 -> 1.105.0 by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43789](https://github.com/BerriAI/litellm/pull/43789)
- fix(auth): give UI/CLI session tokens their own AES-GCM context and header-safe shape by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43790](https://github.com/BerriAI/litellm/pull/43790)
- chore(deps): bump pyjwt, moment and brace-expansion to clear osv-scan by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43792](https://github.com/BerriAI/litellm/pull/43792)
- fix(ui): surface x-litellm-call-id in Logs search, table and drawer by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42436](https://github.com/BerriAI/litellm/pull/42436)
- fix(proxy): look up hashed key names with two spend log rows per key by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43656](https://github.com/BerriAI/litellm/pull/43656)
- fix(cost-map): add deprecation_date to two together_ai nvidia rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43809](https://github.com/BerriAI/litellm/pull/43809)
- test(ci): refresh retired OpenAI tool-call models by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43676](https://github.com/BerriAI/litellm/pull/43676)
- fix(ui): keep MCP permissions visible after key, team and MCP server saves by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43810](https://github.com/BerriAI/litellm/pull/43810)
- test(ci): repair MCP Responses and budget fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43788](https://github.com/BerriAI/litellm/pull/43788)
- test(bedrock): accept regional aliases that inherit Converse routing by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43785](https://github.com/BerriAI/litellm/pull/43785)
- fix(params): categorize internal param appropriately to prevent leaking into request by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43783](https://github.com/BerriAI/litellm/pull/43783)
- perf(router): honour the cooldown read interval in the routing prefetch by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43815](https://github.com/BerriAI/litellm/pull/43815)
- fix(router): carry per-request routing reads on context variables instead of public method kwargs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43814](https://github.com/BerriAI/litellm/pull/43814)
- fix(bedrock): add beta header for output config in message by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43778](https://github.com/BerriAI/litellm/pull/43778)
- refactor: clean up fresh tech debt from 2026-09-29 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43830](https://github.com/BerriAI/litellm/pull/43830)
- test(router): settle the shared logging worker before recording shadow callbacks by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43847](https://github.com/BerriAI/litellm/pull/43847)
- chore(model_prices): add Gemini Veo, Mistral and Azure Claude 4.5 deprecation dates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43857](https://github.com/BerriAI/litellm/pull/43857)
- fix(cost_calculator): bill ultrafast prompts above 272k at the ultrafast long-context rates by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43764](https://github.com/BerriAI/litellm/pull/43764)
- refactor(rust): centralize Python bridge execution wrappers by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43871](https://github.com/BerriAI/litellm/pull/43871)
- chore(cost-map): add openai gpt-image-2.5 batch prices from the pricing page by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43869](https://github.com/BerriAI/litellm/pull/43869)
- chore(cost-map): add fireworks priority prices for ember-1, nemotron and glm 5.3 us rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43811](https://github.com/BerriAI/litellm/pull/43811)
- fix(proxy): attribute completed batch cost rows to /batches in daily activity by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43870](https://github.com/BerriAI/litellm/pull/43870)
- fix(router): strip encrypted reasoning the pinned deployment cannot decrypt by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43781](https://github.com/BerriAI/litellm/pull/43781)
- fix(cost_calculator): stop copying optional_params into response hidden params by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43637](https://github.com/BerriAI/litellm/pull/43637)
- feat(pricing): add vertex_ai gemini-3.8 flash tts rows by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43876](https://github.com/BerriAI/litellm/pull/43876)
- fix(proxy): keep request-body credentials out of stored spend-log requests by [@&#8203;yucheng-berri](https://github.com/yucheng-berri) in [#&#8203;43635](https://github.com/BerriAI/litellm/pull/43635)
- fix(ui): right-align money and count columns across tables by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;37889](https://github.com/BerriAI/litellm/pull/37889)
- feat(agents): enforce authoritative agent permissions by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43721](https://github.com/BerriAI/litellm/pull/43721)
- fix(proxy): strip caller credentials from websocket passthrough by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43855](https://github.com/BerriAI/litellm/pull/43855)
- fix(ui): render access group MCP and agent selections as wrapping chips by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;41228](https://github.com/BerriAI/litellm/pull/41228)
- fix(responses): scan and mask top-level instructions with guardrails by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43629](https://github.com/BerriAI/litellm/pull/43629)
- feat(traces): add Rust storage foundation by [@&#8203;yujonglee-berri](https://github.com/yujonglee-berri) in [#&#8203;43819](https://github.com/BerriAI/litellm/pull/43819)
- feat(ui): agent traces tab on logs with timeline and otel setup guide by [@&#8203;ishaan-berri](https://github.com/ishaan-berri) in [#&#8203;43891](https://github.com/BerriAI/litellm/pull/43891)
- feat(otel v2): excluded_services opt-out for datastore spans on tenant destinations by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43278](https://github.com/BerriAI/litellm/pull/43278)
- fix(traces): correct ClickHouse rollup partitioning, dedupe keys, and retention changes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43901](https://github.com/BerriAI/litellm/pull/43901)
- fix(bedrock): keep applicable beta headers by [@&#8203;shrey-berri](https://github.com/shrey-berri) in [#&#8203;43829](https://github.com/BerriAI/litellm/pull/43829)
- feat(agents): authenticate Entra identities and delegated requests by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43722](https://github.com/BerriAI/litellm/pull/43722)
- fix(hosted_vllm): keep reasoning_content on replayed assistant messages by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43599](https://github.com/BerriAI/litellm/pull/43599)
- fix(proxy): delete large teams without per-member transaction fan-out by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;42998](https://github.com/BerriAI/litellm/pull/42998)
- feat(tracing): port OTLP ingestion to current trace foundation by [@&#8203;yujonglee-berri](https://github.com/yujonglee-berri) in [#&#8203;43915](https://github.com/BerriAI/litellm/pull/43915)
- feat(proxy): add native ROI calculator for gateway spend vs merged PRs by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43669](https://github.com/BerriAI/litellm/pull/43669)
- test(e2e): repair completion, SAIL, and spend-log fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43902](https://github.com/BerriAI/litellm/pull/43902)
- test(s3_v2): pin async 5xx retry through the production AsyncHTTPHandler by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43080](https://github.com/BerriAI/litellm/pull/43080)
- feat(ui): adopt the new LiteLLM logo and monogram by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43913](https://github.com/BerriAI/litellm/pull/43913)
- fix(proxy): relay Azure passthrough body model groups through the router by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43896](https://github.com/BerriAI/litellm/pull/43896)
- fix(proxy): register a UI-configured arize callback next to otel under OTel v2 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43906](https://github.com/BerriAI/litellm/pull/43906)
- fix(transcription): honor base_url alias for Groq Whisper and report it as the api base by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43917](https://github.com/BerriAI/litellm/pull/43917)
- feat(tracing): store spend in ClickHouse automatically by [@&#8203;yujonglee-berri](https://github.com/yujonglee-berri) in [#&#8203;43928](https://github.com/BerriAI/litellm/pull/43928)
- fix(packaging): keep wheel paths under Windows MAX_PATH for Store Python by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43903](https://github.com/BerriAI/litellm/pull/43903)
- feat(agents): add identity registration and dashboard controls by [@&#8203;joshua-berri](https://github.com/joshua-berri) in [#&#8203;43723](https://github.com/BerriAI/litellm/pull/43723)
- refactor(proxy): answer every team access check with TeamAccess.allows by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;43364](https://github.com/BerriAI/litellm/pull/43364)
- test(bedrock): restore the AWS env after a failed live call in the auth tests by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43921](https://github.com/BerriAI/litellm/pull/43921)
- feat(lens): analyze agent activity with a separate worker by [@&#8203;moe-berri](https://github.com/moe-berri) in [#&#8203;43889](https://github.com/BerriAI/litellm/pull/43889)
- fix(router): bill service tiers at catalog rates for custom-priced deployments by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43890](https://github.com/BerriAI/litellm/pull/43890)
- test(ci): refresh qualified retired OpenAI fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43938](https://github.com/BerriAI/litellm/pull/43938)
- fix(anthropic): forward the dangerous-tool-use beta to Azure AI Foundry by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43934](https://github.com/BerriAI/litellm/pull/43934)
- test(proxy): scope user_api_key_auth overrides in proxy_server tests by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43952](https://github.com/BerriAI/litellm/pull/43952)
- fix(wandb): set supports_vision true on GLM-5.3-Flash by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43951](https://github.com/BerriAI/litellm/pull/43951)
- chore(cost-map): sync openrouter prices from the models API by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43950](https://github.com/BerriAI/litellm/pull/43950)
- fix(grayswan): send request conversation and tool calls to post-call monitor by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43770](https://github.com/BerriAI/litellm/pull/43770)
- fix(azure_storage): name Data Lake objects without base64 padding or slashes by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43914](https://github.com/BerriAI/litellm/pull/43914)
- fix(guardrails): treat an unknown straiker api_version as unset instead of skipping the guardrail by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43956](https://github.com/BerriAI/litellm/pull/43956)
- chore(deps): bump gitpython and tornado, extend diskcache osv ignore to Nov 1 by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43961](https://github.com/BerriAI/litellm/pull/43961)
- fix(azure_storage): keep the DataLakeServiceClient alive until its TTL elapses by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43082](https://github.com/BerriAI/litellm/pull/43082)
- feat(proxy): record in spend logs whether a request used a client-forwarded Anthropic OAuth token by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43063](https://github.com/BerriAI/litellm/pull/43063)
- test(ci): repair stale tests and move retired OpenAI text-completion fixtures by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43958](https://github.com/BerriAI/litellm/pull/43958)
- feat(e2e): record each e2e test's steps, starting with ProxyClient by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;42393](https://github.com/BerriAI/litellm/pull/42393)
- feat(providers): add Cortecs as an OpenAI-compatible provider by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43872](https://github.com/BerriAI/litellm/pull/43872)
- feat(ui): filter tags by name and description on the Tag Management page by [@&#8203;galovics](https://github.com/galovics) in [#&#8203;42949](https://github.com/BerriAI/litellm/pull/42949)
- fix(caching): write the response-cache SET to Redis at once instead of on the post-call batch by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43973](https://github.com/BerriAI/litellm/pull/43973)
- test(e2e): typed per-test metadata for the e2e suite by [@&#8203;ryan-crabbe-berri](https://github.com/ryan-crabbe-berri) in [#&#8203;42044](https://github.com/BerriAI/litellm/pull/42044)
- feat(guardrails): honor litellm_params.timeout in every HTTP guardrail by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43134](https://github.com/BerriAI/litellm/pull/43134)
- chore(cost-map): add fireworks inkling priority prices from the prices api by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43949](https://github.com/BerriAI/litellm/pull/43949)
- chore(cost-map): add deprecation date for anthropic claude-sonnet-4-5 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43898](https://github.com/BerriAI/litellm/pull/43898)
- fix(cost-map): raise baseten DeepSeek-V4.1-Flash max output to 262144 by [@&#8203;berriai-litellm-provider-info-sync](https://github.com/berriai-litellm-provider-info-sync)\[bot] in [#&#8203;43916](https://github.com/BerriAI/litellm/pull/43916)
- fix(proxy): restore pre-config-wins handling of pass-through endpoints by [@&#8203;yuneng-berri](https://github.com/yuneng-berri) in [#&#8203;43962](https://github.com/BerriAI/litellm/pull/43962)
- feat(lens): investigate sampled traces and retain batch results by [@&#8203;moe-berri](https://github.com/moe-berri) in [#&#8203;43942](https://github.com/BerriAI/litellm/pull/43942)
- fix(guardrails): scan Responses API input in Azure Prompt Shield by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43786](https://github.com/BerriAI/litellm/pull/43786)
- fix(guardrails): scan Responses API input in Azure Text Moderation by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43965](https://github.com/BerriAI/litellm/pull/43965)
- refactor: clean up fresh tech debt from 2026-09-30 by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#8203;43993](https://github.com/BerriAI/litellm/pull/43993)
- test: inject the HIBP client and the MCP loop clock so two backend tests stop flaking by [@&#8203;devin-ai-integration](https://github.com/devin-ai-integration)\[bot] in [#&#…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants